Quelle est la meilleure pratique de déclarer l'entité cadre Contexts ou p> Avons-nous besoin d'utiliser en entitéFramework? Si oui, ma 2e question p> dans la couche de dataAccess est exécutant EF et stocker le résultat dans Ienumerable Inside à l'aide de P> My DL P> "The operation cannot be completed because the DbContext has been disposed Entity Framework"
3 Réponses :
Vous pouvez éviter le comportement EF de chargement paresseux en appelant .tolist () code> sur le ienumerable code> avant que le contexte ne soit disposé (c.-à-d. Dans votre en utilisant code> bloc) p>
Oui, utilisez toujours l'utilisation de Paul. +1 donné. Vous avez toujours un problème similaire si votre modèle a des objets de petits-enfants cependant. Je n'ai pas passé de temps à résoudre ce temps.
@James je pense que vous pouvez obtenir vos enfants / petits-enfants en utilisant .include () code> dans la relève d'origine LINQ
Le problème est que, avec de grands ensembles de données, cela chargera toute la chose en mémoire, ce que vous voulez éviter en premier lieu en utilisant des curseurs et ienumérables.
Votre demande sera exécutée vers la DataSource dès que vous appellerez la méthode .tolist ().
C'est pourquoi vous ne pouvez pas exécuter .tolist () dans votre contrôleur comme votre contexte que votre contexte soit disposé à la fin de l'utilisation du bloc. p>
dans votre méthode DL, faites simplement quelque chose comme: P>
var mySomethingIEnumerable = DL.Function();
Oui, une utilisation est la meilleure pratique car elle nettoie votre contexte. Utilisation de l'instruction est un raccourci pour:
public IEnumerable<Employee> GetEmployeesInAccounting()
{
using(var myContext = new MyDbContext())
{
return myContext.Employees.Where(emp => emp.Department == 'Accounting');
}
}
// Code that fails, Assuming Manager is a lazy loaded entity, this results in an exception but it compiles no problem
var acctEmps = GetEmployeesInAccounting();
var something = acctEmps.First().Department.Manager.Department;
Je pense que ce lien est exactement ce que vous avez posé: Stackoverflow.com/Questtions/824330/...
Oui, s'il vous plaît vérifier ma 2e question
Dupliqué possible de Utilisation de la déclaration et de l'entité framework