查找使用HasKey方法定义的类的KeyAttribute

时间:2015-02-20 15:41:49

标签: c# entity-framework attributes key

我正在使用Entity Framework Power Tools来生成数据库模型类。 它使用HasKey()方法来定义类的键属性。 有没有办法在我的应用程序代码中使用它时找到类的键属性? 有没有办法检查特定属性是否为Key Attribute?

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

我试图使用以下方法找到关键属性,但它不起作用

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

1 个答案:

答案 0 :(得分:0)

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

            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();

对象属性和/或值可以通过keyName使用反射来访问。