数据批注属性是 .NET 属性,可以应用于实体类或属性,以替代 EF 6 和 EF Core 中的默认约定。
数据批注属性包含在 EF 6 和 EF Core 的 and命名空间中。 这些属性不仅在实体框架中使用,还可以与 ASP.NET MVC 或数据控件一起使用。System.ComponentModel.DataAnnotationsSystem.ComponentModel.DataAnnotations.Schema
这些数据批注属性在 EF 6 和 EF Core 中的工作方式相同,并且在两者中都有效。
注意:数据注释仅提供配置选项的子集。Fluent API提供了代码优先中可用的全套配置选项。
System.ComponentModel.DataAnnotations 属性
| 属性 | 描述 |
|---|---|
| Key | Key 主键 对应 数据库中的 PrimaryKey 列。 |
| Timestamp | 时间戳列对数据库中的 UPDATE 语句进行并发检查。RowVersion |
| ConcurrencyCheck | 可以应用于属性以指定应将相应的列包含在乐观并发检查中。 |
| Required | 必需属性 NotNull 列。 |
| MinLength | 允许的最小字符串长度。 |
| MaxLength | 允许的最大字符串长度。 |
| StringLength | 允许的最大字符串长度。 |
System.ComponentModel.DataAnnotations.Schema Attributes
| 属性 | 描述 |
|---|---|
| Table | 表名、架构 |
| Column | 列名、顺序、数据类型 |
| Index | 可以应用于属性以配置相应的列在数据库中应具有索引。(仅限 EF 6.1 及更高版本,EF Core 2.0+ 不支持此属性。) |
| ForeignKey | 可以应用于属性以将其标记为外键属性。 |
| NotMapped | 未映射属性 支持:表名、字段 |
| DatabaseGenerated | 可以应用于属性以配置基础数据库应如何为相应列生成值,例如标识、计算或无。 |
| InverseProperty | 可以应用于属性以指定表示同一关系另一端的导航属性的逆向。 |
| ComplexType | 在 EF 6 中将类标记为复杂类型。EF Core 2.0+ 不支持此属性。 |