![](/img/trans.png)
[英]Creating new objects in Entity Framework using DbSet<T>.Create()
[英]Create a DbSet<T> dynamically in Entity Framework?
在 LINQ to SQL 中,我可以使用DataContext.GetTable<T>
动态创建存储库。 除了在特定DbContext
上声明属性之外,在 Entity Framework 4 中是否有类似的方法来执行此DbContext
? 例如:
public MyDbContext: DbContext
{
public DbSet<MySet> MySets {get; set;}
}
我想知道如何像使用 LINQ to SQL 那样动态创建/获取对MySets
的引用, MySets
:
var mySet = MyDbContext.GetTable<MySet>();
DbContext
有这个方法:
var set = context.Set<MyEntity>();
用:
DbSet<MyEntity> set = context.Set<MyEntity>();
或者,如果您不能使用泛型方法:
DbSet set = context.Set(
typeof( MyEntity )
);
不要担心第二次加载和复制 POCO。 集合由上下文在内部缓存。
这是我的方法:
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>();
这将返回您的整个集合。 我用它来为不经常更改其内容的基本表执行缓存功能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.