我尝试在两列上添加唯一约束。我发现多个源声明我应该对EF Core Fluent API应用程序使用HasAlternateKey方法。但是,运行Add-Migration后,迁移文件中生成的代码不包括约束-几乎就像是故意忽略或未检测到约束一样。
下面是我正在使用的模型构建器代码:
modelBuilder.Entity<PlasmidStockCode>(e =>
{
e.ToTable("PlasmidStockCode");
e.HasKey(c => c.ID);
e.Property(c => c.ID).ValueGeneratedOnAdd();
e.HasAlternateKey(c => new { c.ClientName, c.PlasmidName });
e.HasMany(c => c.PlasmidStockComments).WithOne().HasForeignKey(c => c.PlasmidStockCodeID).OnDelete(DeleteBehavior.Restrict);
e.HasMany(c => c.PlasmidStockLots).WithOne().HasForeignKey(c => c.PlasmidStockCodeID).OnDelete(DeleteBehavior.Restrict);
e.HasMany(c => c.qPCRTargets).WithOne().HasForeignKey(c => c.PlasmidStockCodeID).OnDelete(DeleteBehavior.Restrict);
});
AddBaseConfiguration(modelBuilder);
}
我也尝试过使用.HasIndex,但不幸的是,它也没有被检测到/包含。
你知道我可能错过了什么吗?先谢了!
2条答案
按热度按时间brgchamk1#
使用DBContext类的
OnModelCreating
方法中的IsUnique
和HasIndex
方法将组合键添加到表中。然后使用Add-Migration <YourMigrationName>
添加迁移,再在Program Manager控制台中运行Update-Database
。ecfdbz9o2#
我也做了类似的事情,看起来效果不错:
约束将添加到生成的迁移文件的Up方法中