在LINQ to SQL中,我可以使用DataContext.GetTable<T>
动态创建存储库。除了在特定DbContext
上声明属性之外,是否有类似的方法在Entity Framework 4中执行此操作?例如:
public MyDbContext: DbContext
{
public DbSet<MySet> MySets {get; set;}
}
我想知道如何动态创建/获取对MySets
的引用,就像我在LINQ to SQL中一样:
var mySet = MyDbContext.GetTable<MySet>();
答案 0 :(得分:38)
DbContext
有这样的方法:
var set = context.Set<MyEntity>();
答案 1 :(得分:17)
使用:
DbSet<MyEntity> set = context.Set<MyEntity>();
或者,如果您不能使用通用方法:
DbSet set = context.Set(
typeof( MyEntity )
);
不要担心第二次加载和复制POCO。集合由Context内部缓存。
答案 2 :(得分:2)
这是我的方法
public static List<T> GetCollection<T>()
{
List<T> lstDynamic = null;
using (MyDbContext db = new MyDbContext())
{
DbSet mySet = db.Set(typeof(T));
mySet.Load();
var list = mySet.Local.Cast<T>();
lstDynamic = list.ToList();
}
return lstDynamic;
}
您将此函数称为:
List<Customer> lst = StaticClass.GetCollection<Customer>();
这将返回您的整个收藏集。我用它来为基本表执行缓存功能,这些表不会经常更改其内容。