有没有一种方法可以从指定的DbContext实例中获取POCO的类型?
var items = mdw.GetItems<EntityType>(DataSpace.OSpace);
获取你的POCO类而不是EF代理。
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);
}
}
Assembly.GetTypes()
并匹配名称来获取类型。 - Eranga@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));
}
i.FullName
没有正确的命名空间,它以某种方式具有映射命名空间。 - Najera