查找 class 的 KeyAttribute,使用 HasKey 方法定义

Find KeyAttribute of a class, defined using HasKey method

我正在使用 Entity Framework Power Tools 生成数据库模型 classes。 它使用 HasKey() 方法来定义 class 的键属性。 在我的应用程序代码中使用它时,有什么方法可以找到 class 的关键属性吗? 有什么方法可以检查特定属性是否是关键属性?

public class MyTableMap : EntityTypeConfiguration<MyTable>
{
   public MyTableMap()
   {
       // Primary Key
       this.HasKey(t => t.RecordID);
   }
 }

我正在尝试使用以下方法查找关键属性,但它不起作用

if (propertyInfoObj.GetCustomAttributes(false).Any(x => x.GetType() == typeof(KeyAttribute)))

我使用以下方法解决了我的问题:

            ObjectContext objectContext = ((IObjectContextAdapter)dbContext).ObjectContext;
            ObjectSet<Entity> set = objectContext.CreateObjectSet<Entity>();
            IEnumerable<string> keyNames = set.EntitySet.ElementType
                                                        .KeyMembers
                                                        .Select(k => k.Name);

            string keyName = keyNames.FirstOrDefault();

对象 属性 and/or 值可以通过 keyName 使用反射访问。