我发现自己经常这样做:
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/