我正在将项目从EF6迁移到EF-Core。 Metadata API发生了重大变化,我无法找到解决方案:
在EF6下,我可以使用以下代码从代理类型中找到POCO类型:
ObjectContext.GetObjectType(theEntity.GetType)
然而,这在EF-Core(无ObjectContext
类)下不起作用。我搜索并搜索无济于事。有谁知道如何从entity
或entity proxy type
获取POCO类型?
答案 0 :(得分:4)
EF Core不支持ObjectContext
API。此外,EF Core没有代理类型。
您可以从IModel
获取有关实体类型的元数据。
using (var db = new MyDbContext())
{
// gets the metadata about all entity types
IEnumerable<IEntityType> entityTypes = db.Model.GetEntityTypes();
foreach (var entityType in entityTypes)
{
Type pocoType = entityType.ClrType;
}
}
答案 1 :(得分:0)
没有完美的方法。例如,您可以检查名称空间。如果它是代理服务器
private Type Unproxy(Type type)
{
if(type.Namespace == "Castle.Proxies")
{
return type.BaseType;
}
return type;
}