如何从实体代理类型中获取实体POCO类型?

时间:2016-07-10 21:58:23

标签: entity-framework-core

我正在将项目从EF6迁移到EF-Core。 Metadata API发生了重大变化,我无法找到解决方案:

在EF6下,我可以使用以下代码从代理类型中找到POCO类型:

ObjectContext.GetObjectType(theEntity.GetType)

然而,这在EF-Core(无ObjectContext类)下不起作用。我搜索并搜索无济于事。有谁知道如何从entityentity proxy type获取POCO类型?

2 个答案:

答案 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;
}