2016年1月17日 星期日

[Entity Framework 6] Use MetadataType to define the attribure of DAO properties.

.NET   Entity Framework    ORM 




背景

Database first開發的環境下, 重新加入實體資料模型會將開發者所有在 .edmx 程式碼的調整清除;

延伸閱讀文章:  Entity Framework 6 issue (2)

這時候可利用Partial class的特性定義DAO新的properties或方法,但是如果是要加上Attribute 在實體資料模型的欄位裡面 ( 例如加上System.ComponentModel.DataAnnotations的驗證屬性 ) Partial class就不是適合了,這時可以利用 MetadataTypeAttribute 來完成此需求。

環境

l   Windows 7 pro
l   MS Sql Server 2012
l   Visual Studio 2015 Ent.
l   EntityFramework 6.1.3


實作


Put MetadataTypeAttribute on your Partial Class

使用方式其實相當簡單,首先,我們必須在實體資料模型之外,另外加入新的DAO Partial Class 並且作如下設計。

PS. 本例是 MetaData. MetaDesc 這個欄位在DB並非 NOT NULL 但是我們強迫前端驗證時需判斷其為NOT NULL 和最大長度, 所以在該欄位加上 System.ComponentModel.DataAnnotation 的驗證屬性。

[MetadataType(typeof(MataData_Validation))]
    public partial class MetaData
    {
    }


    internal class MataData_Validation
    {
        [Required]
        [StringLength(500)]
        public string MetaDesc { get; set; }
    }



Reference



沒有留言:

張貼留言