lam*_*tor 4 .net c# lambda extension-methods entity-framework
我发现自己做了很多这样的事情:
using(var db = new MyDbContext())
{
return db.Users.ToList(); // or some other simple query
}
Run Code Online (Sandbox Code Playgroud)
对于这些简单的情况,这将是很好的事情,如:
return MyDbContext.Execute(db => db.Users);
Run Code Online (Sandbox Code Playgroud)
但我不确定如何进行扩展方法.理想情况下(我认为)它需要一个DbContext(所以我可以重用代码)并返回模板化的IList ..但这可能吗?
当然,如果已经有一种方法可以做到这一点,我很乐意听到它.
你可以为此编写最简单的静态类.您不需要扩展方法,因为这需要一个实例(并且根据示例中的语法,您还没有):
public static class MyDbContextStatic {
public static T Execute(Func<MyDbContext, T> f) {
using (var db = new MyDbContext())
return f(db);
}
}
Run Code Online (Sandbox Code Playgroud)
使用:
var users = MyDbContextStatic.Execute(db => db.Users);
Run Code Online (Sandbox Code Playgroud)
在处理DbContext之前,您可能希望在每个对象上调用Detach或其他内容.但是你明白了.
归档时间: |
|
查看次数: |
6169 次 |
最近记录: |