[EF]如何取得ADO.NET Entity Framework中某Table的主鍵值設定
由「如何取得ADO.NET實體資料模型中某Table的主鍵值設定」參考「Entity Framework 4 How to find the primary key?」可以取得EF某Table中PK屬性。
透過Extension Methods的方式,可以讓我們透過EntityObject去取得它的PK屬性,使用上比較直覺一點。如下,
MYEntityObj myE = new MYEntityObj();
PropertyInfo myEpk = myE.GetPK();
//或
PropertyInfo mypk2 = (new MYEntityObj()).GetPK();
EntityObject Extension Method Code如下,
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
using System.Data.Objects.DataClasses;
//要加入 System.Data.Linq.dll 參考
using System.Data.Linq.Mapping;
namespace YourNameSpace
{
    public static class MyDBExtension
    {
        public static PropertyInfo GetPK(this EntityObject value)
        {
            PropertyInfo[] properties = value.GetType().GetProperties();
            foreach (PropertyInfo pI in properties)
            {
                System.Object[] attributes = pI.GetCustomAttributes(true);
                foreach (object attribute in attributes)
                {
                    if (attribute is EdmScalarPropertyAttribute)
                    {
                        if ((attribute as EdmScalarPropertyAttribute).EntityKeyProperty == true)
                            return pI;
                    }
                    else if (attribute is ColumnAttribute)
                    {
                        if ((attribute as ColumnAttribute).IsPrimaryKey == true)
                            return pI;
                    }
                }
            }
            return null;
        }
    }
}
Hi,
亂馬客Blog已移到了 「亂馬客 : Re:從零開始的軟體開發生活」
請大家繼續支持 ^_^

