Entity Framework 6 Code First 資料註解

Entity Framework 6 Code First 資料註解 (System.ComponentModel.DataAnnotations)

Entity Framework 依賴每個實體都有用於實體追蹤的索引鍵值。 Code First 的一個慣例是隱含索引鍵屬性;Code First 會尋找名為 「Id」 的屬性,或類別名稱和 「Id」 的組合,例如 「BlogId」。 此屬性會對應至資料庫中的主鍵資料行。

[KEY] 定義資料表中的索引鍵

例如:

public class Passport
{
   [Key]
   public int PassportNumber { get; set; }
   public string IssuingCountry { get; set; }
   public DateTime Issued { get; set; }
   public DateTime Expires { get; set; }
}

複合索引鍵時,則需要再指定複合主鍵順序 [Column(Order=nnn)]

例如:

public class Passport
{
   [Key]
   [Column(Order=1)]
   public int PassportNumber { get; set; }
   [Key]
   [Column(Order = 2)]
   public string IssuingCountry { get; set; }
   public DateTime Issued { get; set; }
   public DateTime Expires { get; set; }
}

若是有複合外鍵時,則必須指定用於對應主鍵屬性的相同資料行順序。

例如:

public class PassportStamp
{
   [Key]
   public int StampId { get; set; }
   public DateTime Stamped { get; set; }
   public string StampingCountry { get; set; }
   [ForeignKey("Passport")]
   [Column(Order = 1)]
   public int PassportNumber { get; set; }
   [ForeignKey("Passport")]
   [Column(Order = 2)]
   public string IssuingCountry { get; set; }
   public Passport Passport { get; set; }
}


[Required] 定義此欄位是必要項目。
[MaxLength] 定義此欄位最大長度,可使用 ErrorMessage 來指定錯誤訊息
[MinLength] 定義此欄位最小長度,可使用 ErrorMessage 來指定錯誤訊息
[NotMapped] 定義此欄位未對應至資料庫
[ComplexType] 定義為複雜型別
[ConcurrencyCheck] 並行檢查
[TimeStamp] 時間戳記
[Table("")] 定義資料表名稱
[Column("", TypeName="")] 欄位名稱與資料類型
 


程式是運氣與直覺堆砌而成的奇蹟。
若不具備這兩者,不可能以這樣的工時實現這樣的規格。
修改規格是對奇蹟吐槽的褻瀆行為。
而追加修改則是相信奇蹟還會重現的魯莽行動。