如何使用 entityframework 创建具有多列的唯一约束
how can create Unique Constraint with multi column with entityframework
我使用 Entityframework Code First,并使用 Fluent API 的 EntityTypeConfiguration。
如何创建具有多列的唯一约束。
例如,我有一个 table 和下面的字段
- 编号
- 公司编号
- 代码
- 姓名
我想根据 CompanyId 将代码列设置为唯一
在您的 EntityTypeConfiguration 中,您可以这样做:
Property(m => m.CompanyId)
.HasColumnAnnotation("Index", new IndexAnnotation(new IndexAttribute("IX_YourUniqueIndexName", 1) { IsUnique = true }));
Property(m => m.Code)
.HasColumnAnnotation("Index", new IndexAnnotation(new IndexAttribute("IX_YourUniqueIndexName", 2) { IsUnique = true }));
这将在这两列上创建唯一索引。
确保为唯一索引使用相同的名称。两者都必须是名称 "IX_YourUniqueIndex"。如果一个叫 "IX_Index1" 而另一个叫 "IX_Index2" 那么它会在每个上创建一个唯一的索引,这不是你想要的
我使用 Entityframework Code First,并使用 Fluent API 的 EntityTypeConfiguration。 如何创建具有多列的唯一约束。 例如,我有一个 table 和下面的字段
- 编号
- 公司编号
- 代码
- 姓名
我想根据 CompanyId 将代码列设置为唯一
在您的 EntityTypeConfiguration 中,您可以这样做:
Property(m => m.CompanyId)
.HasColumnAnnotation("Index", new IndexAnnotation(new IndexAttribute("IX_YourUniqueIndexName", 1) { IsUnique = true }));
Property(m => m.Code)
.HasColumnAnnotation("Index", new IndexAnnotation(new IndexAttribute("IX_YourUniqueIndexName", 2) { IsUnique = true }));
这将在这两列上创建唯一索引。
确保为唯一索引使用相同的名称。两者都必须是名称 "IX_YourUniqueIndex"。如果一个叫 "IX_Index1" 而另一个叫 "IX_Index2" 那么它会在每个上创建一个唯一的索引,这不是你想要的