有没有办法从指定的 DbContext 实例中获取 POCO 的类型?
问问题
3905 次
3 回答
6
您需要访问MetadataWorkspace
public class MyContext : DbContext
{
public void Test()
{
var objectContext = ((IObjectContextAdapter)this).ObjectContext;
var mdw = objectContext.MetadataWorkspace;
var items = mdw.GetItems<EntityType>(DataSpace.CSpace);
foreach (var i in items)
{
Console.WriteLine("Class Name: {0}", i.Name);
}
}
于 2012-09-23T15:48:59.613 回答
6
不幸的是,我无法编辑接受的答案 - 您只需要更改使用的数据空间,如下所示
var items = mdw.GetItems<EntityType>(DataSpace.OSpace);
获取您的 POCO 类而不是 EF 代理。
于 2016-06-23T09:52:15.110 回答
3
@Lei Yang:您可以使用它来将所有类型放入列表中。
var objectContext = ((IObjectContextAdapter) dbContext).ObjectContext;
var mdw = objectContext.MetadataWorkspace;
var items = mdw.GetItems<EntityType>(DataSpace.CSpace);
var dbContextAssembly = dbContext.GetType().Assembly;
var entityTypes = new List<Type>();
foreach (var i in items) {
entityTypes.Add(dbContextAssembly.GetType(i.FullName));
}
于 2015-02-02T07:53:44.147 回答