作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 EF Core 1.1 并创建了我的一对一关系,例如:
EntityTypeBuilder<Account>
.HasOne(a => a.Customer)
.WithOne(a => a.Account)
.HasForeignKey<Account>(a => a.CustomerId)
现在在我的 DbContext 上使用 Add-Migration 它会生成以下内容:
migrationBuilder.CreateIndex(
name: "IX_Accounts_CustomerId",
table: "Accounts",
column: "CustomerId",
unique: true);
有没有办法在 Fluent 中指定去除索引的唯一性?我不介意生成索引,但出于我的目的,它不能是唯一的。原因是这些表是可审计的,因此可能存在重复数据(在 PK 之外)。因此,如果 FK 实体没有发生变化(但可能在记录的其他地方发生变化),则记录可以包含相同的 FK id。
TL;DR 有什么方法可以使 Fluent 中的索引对于一对一 FK 不唯一?
最佳答案
如果想让外键的索引不唯一,需要在fluent api中配置FK属性的索引,设置为非唯一。在您的示例中,在 OnModelCreating()
方法中添加以下代码行将为您提供所需的结果。
modelBuilder.Entity<Account>().HasIndex(e => e.CustomerId).IsUnique(false);
尽管在修复导航属性时,一对一关系的 FK 属性中的重复值可能会在运行时产生不良影响。
关于.net-core - EF Core 1.1 在 FK 上一对一生成唯一索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41170325/
我是一名优秀的程序员,十分优秀!