EF6 System.Data.Entity.Core.EntityKey 在 Entity Framework Core 中的等价物是啥?

Posted

技术标签:

【中文标题】EF6 System.Data.Entity.Core.EntityKey 在 Entity Framework Core 中的等价物是啥?【英文标题】:What is the equivalent for EF6 System.Data.Entity.Core.EntityKey in Entity Framework Core?EF6 System.Data.Entity.Core.EntityKey 在 Entity Framework Core 中的等价物是什么? 【发布时间】:2021-11-14 21:52:15 【问题描述】:

我在使用 EF 6 的 .net 框架中有以下代码。

PropertyInfo[] propInfo = myObject.GetType().GetProperties(); //myObject is of type T
foreach (PropertyInfo col in propInfo) 
    if (col.PropertyType != typeof(System.Data.Entity.Core.EntityKey))
           //do something

现在我正在迁移到 .Net 5 和 EF Core,如何获得 typeof(EntityKey) 的等效项?

【问题讨论】:

【参考方案1】:

您可以使用以下 API 实现此目的:

var et = ctx.Model.FindEntityType(typeof(T));
var properties = et.GetProperties();

foreach (var property in properties)

    if (!property.IsKey())
    
         // do something
    

【讨论】:

好的,但是我无法访问此类中的 dbcontext。还有其他方法吗? 如果无法访问 IModel,我认为不可能 我可以使用Microsoft.EntityFrameworkCore.Metadata.IModel,但是没有DbContext的实例,有什么用吗? @Svyatoslav-danyliv 实际上您只需要来自DbContextIModel 实例。它是映射的元数据。

以上是关于EF6 System.Data.Entity.Core.EntityKey 在 Entity Framework Core 中的等价物是啥?的主要内容,如果未能解决你的问题,请参考以下文章

EF6 设置默认属性禁用更改跟踪

EF6 FluentAPI,0:1 单向

C# EF6 代码优先实体状态

EF6 使用列默认值创建代码优先表

EF6 Migration 自动迁移未执行

EF6,延迟加载未按预期工作