J'ai un peu de code qui ressemble à ceci:
public static IEnumerable<User> SelectFromEmployee(int employee)
{
using (var ctx = Database.AccountingContext())
{
return ctx.Users.Where(c => c.Employee_FK == employee).ToList();
}
}
4 Réponses :
Le problème est que vous créez votre contexte de données, puis je dispose-le:
juste pour obtenir votre aller, essayez cela à la place: p> Qu'est-ce que j'ai fait ici est que j'ai déplacé le contexte de données en dehors de la méthode à la place, le problème est maintenant que vous devez contrôler le dispositif d'élimination de par vous-même et vous devrez peut-être aussi considérer que vous bloquez pour plus de connexions, assurez-vous donc de disposer de la connexion. P> EDIT FORT> P> J'ai supposé que vous vouliez pouvoir utiliser également des relations, etc. p> p> à l'aide de (var ctx = base de données.accountingContext ()) code>
Le problème est que vous disposez du DataContext. Une option est de le garder pendant que vous utilisez le résultat de la requête. P>
Si vous voulez littéralement faire ce que vous demandez
public static IQueryable<User> SelectFromEmployee(int employee)
{
using (var ctx = Database.AccountingContext())
{
return ctx.Users.Where(c => c.Employee_FK == employee).ToList().AsQueryable();
}
}
Vous devez choisir: p>
iquéryable code>, qui est invoqué sur la base de données. LI>
- disposer le contexte et obtenir
iquéryable code> via toliste (). Asqueriserable () code>, qui est invoqué à la mémoire. LI>
ol>
Veuillez noter que le point important est l'endroit où les données sont via le chargement différé. strong> p>
Dans la deuxième extrait de code que vous utilisez
tolist () code> qui créera une nouvelle liste à partir de ceCTX code> et donc aucun problème si vous Disposez i> le < Code> CTX CODE> Après cela, mais dans votre première tentative, vous disposez duCTX CODE> et utilisez sa valeur en dehors duà l'aide de code> portée.