none
在Entity Framework中,怎样得到主键名称、实体集名称? RRS feed

  • 问题

  • 已知实体类型,怎样得到主键名称、实体集名称?实体是使用EDM通过数据库产生来的。

    例如:

          在edmx中有一个实体类 Product,我怎样通过这个类编程得到主键名称(ProductName)、实体集名称(Products)?

     

    2010年6月17日 3:57

答案

  •         // Get entity's key name
            string GetKeyProperty(Type entityType)
            {
                foreach (var prop in entityType.GetProperties())
                {
                    var attr = prop.GetCustomAttributes(typeof(EdmScalarPropertyAttribute), false).FirstOrDefault()
                        as EdmScalarPropertyAttribute;
                    if (attr != null && attr.EntityKeyProperty)
                        return prop.Name;
                }
                return null;
            }
    Mog Liang
    • 已建议为答案 Ali Kofi 2010年6月30日 3:43
    • 已标记为答案 zzdfc 2010年8月7日 15:01
    2010年6月23日 9:11

全部回复

  • 你可以用Reflection来检测实例类Property上的Attribute.


    Mog Liang
    2010年6月22日 5:20
  • 版主写个例子,我也遇到了这样的问题!
    2010年6月22日 7:52
  •         // Get entity's key name
            string GetKeyProperty(Type entityType)
            {
                foreach (var prop in entityType.GetProperties())
                {
                    var attr = prop.GetCustomAttributes(typeof(EdmScalarPropertyAttribute), false).FirstOrDefault()
                        as EdmScalarPropertyAttribute;
                    if (attr != null && attr.EntityKeyProperty)
                        return prop.Name;
                }
                return null;
            }
    Mog Liang
    • 已建议为答案 Ali Kofi 2010年6月30日 3:43
    • 已标记为答案 zzdfc 2010年8月7日 15:01
    2010年6月23日 9:11
  • 谢谢楼主了,受教了!
    2010年6月24日 15:57