原文地址:http://www.entityframeworktutorial.net/code-first/dataannotation-in-code-first.aspx 數據註解特性是.NET特性,可以在EF或者EF Core中,應用於實體類上或者屬性上,以重寫預設的約定規則。 在EF 6和 ...
原文地址:http://www.entityframeworktutorial.net/code-first/dataannotation-in-code-first.aspx
數據註解特性是.NET特性,可以在EF或者EF Core中,應用於實體類上或者屬性上,以重寫預設的約定規則。
在EF 6和EF Core中,數據註解特性包含在System.ComponentModel.DataAnnotations命名空間和System.ComponentModel.DataAnnotations.Schema命名空間下。
這些特性不僅僅適用於EF,同樣適用於ASP.NET MVC以及數據控制項。數據註解特性,在EF 6和EFCore中工作方式都是相同的、效用一樣的。
System.ComponentModel.DataAnnotations Attributes
特性 | 描述 |
Key | 應用於實體的一個屬性上,然後就生成表裡面的主鍵 |
Timestamp | 應用於實體的一個屬性上,然後生成表的列的類型就是RowVersion |
ConcurrencyCheck | 應用的屬性上,然後相應的列就會生成一個樂觀檢查 |
Required | 應用的屬性上面,生成一個不為空的列,然後映射到資料庫的列中 |
MinLength | 定義最小字元串長度,然後映射到資料庫的列中 |
MaxLength | 定義最大字元串長度,然後映射到資料庫的列中 |
StringLength | 可以指定屬性列允許的最大字元串長度,然後映射到資料庫的列中 |
System.ComponentModel.DataAnnotations.Schema Attributes
特性 | 描述 |
Table | 應用於實體,可以配置表名和模式名 |
Column | 應用於實體的屬性上,可以配置相應的列名,列順序以及數據類型 |
Index | 應用於實體的屬性上,可以為列生成索引(EF 6.1以上的版本才支持) |
ForeignKey | 應用於實體的屬性上,然後生成外鍵屬性 |
NotMapped | 可以應用於實體或者實體的屬性上,應用於實體上,就不會生成表,應用於屬性上,就不會生成列 |
DatabaseGenerated | 配置列自動生成,可以有三個選項:identity【自增】, computed【計算】 or none【無】 |
InverseProperty | 應用於屬性上。就是有相同的關係的時候,用於反轉導航屬性。【概念不好說,等會後面有例子講解。】 |
ComplexType | 在EF 6中標記類是複雜類型,註意:EF Core 2.0 中不支持這個Complex特性 |
我們在後面的子節中,來好好學習一個每個特性。