我发现自己经常这样做:
using(var db = new MyDbContext())
{
return db.Users.ToList(); // or some other simple query
}
像这样的简单案例会很好:
return MyDbContext.Execute(db => db.Users);
但我不确定如何使用扩展方法。理想情况下(我认为)它需要一个 DbContext(这样我可以重用代码)并返回模板化的 IList..但这可能吗?
当然,如果已经有一种方法可以做到这一点,我很想听听。
最佳答案
您可以为此编写最简单的静态类。您不需要扩展方法,因为它需要一个实例(并且根据您示例中的语法,您还没有一个):
public static class MyDbContextStatic {
public static T Execute(Func<MyDbContext, T> f) {
using (var db = new MyDbContext())
return f(db);
}
}
使用:
var users = MyDbContextStatic.Execute(db => db.Users);
IIRC,您可能还想在处理 DbContext 之前对每个对象调用 Detach 或其他方法。但你明白了。
关于c# - DbContext "using"在一行中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12152955/