1. 程式人生 > >metadata與資料驗證

metadata與資料驗證

metadata和資料驗證都在 system.componentmodel.dataannotations名稱空間下。 對於metadata,是因為我們ef databasefirst生成的model類每次 驗證屬性都會被清空,所以延伸出modelmetadata。

using System.ComponentModel.DataAnnotations; 
    [MetadataType(typeof(Product_MetaData))]
    namespace model
  {
  //放程式碼生成器的程式碼
    public partial class Product
    {
            public Guid ProductGuid { get; set; }
            public string ProductName { get; set; }
            public DateTime AddTime { get; set; }
  }
    using System.ComponentModel.DataAnnotations; 
namespace model
{//放擴充套件的資料驗證等資訊,建構函式等
        public class ProductMetaData
        {
            public Guid ProductGuid { get; set; }
            [Required(ErrorMessage = "產品名稱不能為空")]
            public string ProductName { get; set; }
            public DateTime AddTime { get; set; }
         }
}
屬性名稱 說明
[Required] 必填欄位
[MaxLength] 指定屬性中允許的陣列或字串資料的最大長度
[MinLength] 指定屬性中允許的陣列或字串資料的最小長度
[StringLength] 指定最小和最大字元長度
[Range] 指定數值範圍資料驗證相關的資料註解:
[Remote] 使用 jQuery 驗證外掛遠端驗證程式的特性
[FileExtension] 驗證副檔名
[Compare] 比較兩個屬性的值
[RegularExpression] 使用正則表示式驗證
[CustomValidation] 自定義驗證方法
[DataType] 指定要與資料欄位關聯的附加型別的名稱
[EmailAddress] 電子郵件地址(相當於[DataType(DataType.Email)])
[Phone] 電話(同上)
[CreditCard] 信用卡號碼(同上)
[Url] 驗證URL(同上)
[MemberShipPassword] 驗證密碼欄位是否滿足成員資格提供程式的當前密碼要求資料對映相關的資料註解:
[Key] 主鍵欄位
[Column] 資料庫列屬性對映
[NotMapped] 不要建立對應的欄位
[Table] 指定類將對映到的資料庫表
[ForeignKey] 表示關係中用作外來鍵的屬性
[DatabaseGenerated] 指定資料庫生成屬性值的方式(EF不追蹤屬性的變化)資料顯示相關的資料註解:
[DisplayName] 指定本地化的字串(習慣用語類)
[Display] 指定本地化的字串(習慣用語屬性)
[DisplayFormat] 設定資料欄位的格式
[ReadOnly] 指定該特性所繫結到的屬性是隻讀屬性還是讀/寫屬性
[EditAble] 指示資料欄位是否可編輯
[HiddenInput] 指示是否應將屬性值或欄位值呈現為隱藏的 input 元素
[ScaffoldColumn] 指定類或資料列是否使用基架
[UIHint] 指定動態資料用來顯示資料欄位的模板其他
[DisplayColumn] 將所引用的表中顯示的列指定為外來鍵列
[Description] 視覺化設計器在引用元件成員時可以顯示指定的說明



1,資料驗證相關的資料註解繼承ValidationAttribute類,都有一個ErrorMessage屬性用來顯示錯誤提示。如:[Required(ErrorMessage=“此項不能為空”)]。
2、資料對映中Int型別和DateTime型別在資料庫中預設不允許為NULL,如果需要設定為NULL,使用可空型別即可(使用Int?或者DateTime?)。