gpt4 book ai didi

c# - EF Core Fluent API - 未检测到/未包含在迁移中的唯一约束

转载 作者:行者123 更新时间:2023-12-04 15:55:27 25 4
gpt4 key购买 nike

我正在尝试在两列上添加唯一约束。我发现多个来源声明我应该为 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,但不幸的是,它也没有被检测到/包含在内。

知道我可能遗漏了什么吗?提前致谢!

最佳答案

使用 IsUniqueHasIndex DBContext 类的 OnModelCreating 中的方法方法将复合键添加到表中。然后使用 Add-Migration <YourMigrationName> 添加迁移然后运行 ​​Update-Database在程序管理器控制台中。

modelBuilder.Entity<PlasmidStockCode>(b =>
{
b.HasIndex(e => (new { e.ClientName, e.PlasmidName })).IsUnique();
});

关于c# - EF Core Fluent API - 未检测到/未包含在迁移中的唯一约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51897948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com