EntityFramework - Code First - DataAnnotation
.NET中的类提供了一种添加验证的方式。
由命名空间System.ComponentModel.DataAnnotations提供
常用的DataAnnotation特性:
KeyAttribute:对应数据库中的主键
MaxLengthAttribute:对应数据库中字符串类型字段的最大长度
MinLengthAttribute:在数据库中无对应,但在代码中字符串最小长度
ConcurrencyCheckAttribute:指定用于开放式并发检查的列的数据类型
TimestampAttribute:将列的数据类型指定为行版本
EntityFramework程序集中定义了更多的数据映射特性
DatabaseGeneratedAttribute:标记指定实体属性是由数据库生成的,并指定生成策略(None数据库不生成值,Identity当插入行时,数据库生成值,Computed当插入或更新行时,数据库生成值)
ColumnAttribute:指定实体属性在数据库中的列名及数据类型
TableAttribute:指定实体类对应的数据表名
ForeignKeyAttribute:指定导航属性的外键字段
NotMappedAttribute:标记指定实体属性在创建数据库中不创建对应字段
ComplexTypeAttribute:标记指定实体属性是将一个对象作为另一个对象的属性,映射到数据库中则子对象表现为多个属性字段
对于实体关系对应的数据表关系,无非“0:1,1:1,0:N,1:N,N:N”这几种,可以使用导航属性中的数据类型来表示,
0…1端使用单实体类型表示,N端使用ICollection<T>集合类型表示。
对于单实体端,默认是可为空的,即为0关系,如果要设置为1关系,要使用[Required]标签来进行标记。
但对于一对一中的关系主体与依赖对象确无法做更细节的控制。
属性应用
Column("") | 该成员映射到列的列名 | |
ComplexType | 复杂类型 | |
ConcurrencyCheck | ||
DatabaseGenerated | ||
DataMember | ||
DefaultValue() | ||
DisplayName() | ||
ForeignKey("") | 定义外键 | |
InverseProperty | ||
Key | 定义主键 |
[Key,DatabaseGenerated(DatabaseGeneratedOption.None)] [Key,Editable(true),DatabaseGenerated(DatabaseGeneratedOption.None)] |
MaxLength() | 最大长度 | |
MinLength() | 最小长度 | |
NotMapped | 排除映射 | |
RegularExpression() | 定义正则表达式 | |
RelatedTo | ||
Required | 不可为空 | |
StringLength() | 字符串长度 | |
StoreGenerated | ||
Table("") | 定义表名 | |
Timestamp | ||
[Index(IsUnique = true)]
|
[HiddenInput]