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="")] 欄位名稱與資料類型
程式是運氣與直覺堆砌而成的奇蹟。
若不具備這兩者,不可能以這樣的工時實現這樣的規格。
修改規格是對奇蹟吐槽的褻瀆行為。
而追加修改則是相信奇蹟還會重現的魯莽行動。