Je suis en train d'utiliser le framework d'entités (ef) et je reçois l'erreur suivante :
"Le résultat d'une requête ne peut être énuméré plus d'une fois.".
J'ai une classe repository qui contient le contexte de données ef. Ensuite, j'ai une classe contrôleur (à ne pas confondre avec les contrôleurs MVC) qui contient une instance du repository. Jusqu'ici tout va bien... J'ai une méthode de recherche sur le contrôleur qui est censée renvoyer un tableau de RadComboBoxItemData
, qui est utilisé pour peupler un contrôle Telerik RadComboBox.
public RadComboBoxItemData[] Search(int id, string searchText)
{
var query = context.Search(id, searchText);
List result = new List();
foreach (var item in query)
{
RadComboBoxItemData itemData = new RadComboBoxItemData();
itemData.Text = ""; // assign some text here..;
itemData.Value = ""; /*assign some value here..*/
result.Add(itemData);
}
return result.ToArray();
}
Lorsque je débogue mon code, je peux entrer dans la boucle foreach, mais ensuite je reçois une erreur disant :
Une exception de type 'System.InvalidOperationException' s'est produite dans System.Data.Entity.dll mais n'a pas été gérée dans le code utilisateur
Informations supplémentaires : Le résultat de une requête ne peut être énuméré plus de une fois.
Mon entité utilise une importation de fonction d'une procédure stockée existante.
// Méthode du repository EF appelant la méthode importée de fonction sur le contexte de données.
public IEnumerable Search(int id, string searchText)
{
return this.entityContext.Search(id, searchText);
}
L'importation de fonction Search
appelle une procédure stockée pour renvoyer une collection de SearchItem
.
J'ai l'impression que la boucle foreach ne peut pas itérer en raison de quelque chose avec le ef.
4 votes
Tu manques de .ToList(), je ne vois juste pas où... Je vais prendre un café et y jeter un autre coup d'œil