原文地址: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特性 |
我们在后面的子节中,来好好学习一个每个特性。