拥有此实体和地图(简化):
public class Payment {
public Guid Id { get; set; }
public Guid TenantId { get; set; }
public string ExternalPaymentId { get; set; }
public string PaymentId { get; set; }
public Tenant Tenant { get; set; }
}
modelBuilder.Entity<Payment>().HasKey(e => new { e.TenantId, e.Id },
config => config.IsClustered(true));
modelBuilder.Entity<Payment>().HasIndex(e => new { e.TenantId, e.ExternalPaymentId })
.IsUnique(true);
modelBuilder.Entity<Payment>().HasIndex(e => new { e.TenantId, e.PaymentId })
.IsUnique(true);
EF生成以下迁移:
CreateTable(
"dbo.Payments",
.............................
.PrimaryKey(t => new { t.TenantId, t.Id })
.Index(t => new { t.TenantId, t.PaymentId }, unique: true)
.Index(t => t.ExternalPaymentId, unique: true, name: "IX_TenantId_ExternalPaymentId");
为什么第二个索引中不包含TenantId
列?我该如何解决?
答案 0 :(得分:1)
EntityFramework github中存在一个当前未解决的问题:https://github.com/aspnet/EntityFramework6/issues/460
有一个PR尚未合并,以解决问题https://github.com/aspnet/EntityFramework6/pull/534。预期的发行版本是6.3.0。
您可能希望手动编写迁移以解决此问题。