entityframework Il y a déjà un DataReader ouvert associé à cette Commande, qui doit d'abord être fermés
J'ai le code suivant qui récupère des données à partir d'un client de la table
var customers= context.CustomerEntities.Include("Addresses").Select(Mapper.Map).ToList();
Le mappeur de fonction, les cartes de l'entité objet, d'un objet métier, et il semble que ce
internal static Customer Map(CustomerEntity entity)
{
if (entity == null)
return null;
return new Customer
{
Id = entity.Id,
Name = entity.Name,
Addresses = Map(entity.Addresses)
};
}
Maintenant, le code ci-dessus fonctionne bien.
Cependant, lorsque j'essaie de le faire:
var customers= context.CustomerEntities.Select(Mapper.Map).ToList();
Je reçois le message d'erreur: There is already an open DataReader associated with this Command which must be closed first
lorsque le Mapper la fonction est exécutée.
Maintenant, je suis conscient que pour résoudre ce problème, je dois mettre multipleactiveresultsets=True
dans ma chaîne de connexion. Je l'ai essayé, et il n'a résoudre mon problème.
Cependant, quand j'ai couru le générateur de profils SQL, en interrogeant tous les clients de l'entité cadre récupérées automatiquement toutes les adresses ainsi, même si je n'ai pas besoin d'eux.
Est-il une solution de contournement en plus d'avoir à définir multipleactiveresultsets=True
? Je ne veux pas les adresses à être paresseux chargé tout le temps.
Non je n'ai pas un autre contexte actif
Dan, vous pourriez être sur quelque chose. permettez-moi de l'essayer
OriginalL'auteur Null Reference | 2013-04-17
Vous devez vous connecter pour publier un commentaire.
Je crois que c'est parce que, pour chaque
Customer
l'instruction select est à l'origine de lire la base de données à nouveau. Pourquoi ne pas vous faire d'abordToList()
et ensuite appliquer la cartographie (Select
) quelque chose comme:Je crois que ce serait mettre les données en premier et ensuite faire de la cartographie et tu n'aurais pas ce problème.
Downvoted pour les raisons mentionnées ci-dessus.
Peu inutile downvoting sauf si vous avez quelque chose de positif pour contribuer, c'est à dire une solution de rechange....
OriginalL'auteur Dan Hunex