【问题标题】:Unique constraint on property that is not the primary key非主键属性的唯一约束
【发布时间】:2020-10-25 12:38:28
【问题描述】:

我想在使用实体框架时将类的另一个属性设置为唯一。 我查看了有类似问题的其他页面,但答案没有达到我的预期。

Similar problem

现在我有一个简单的对象,其中 ID 是键,但我也希望名称是唯一的。它不应该是组合主键。

public class Building
{
    public int Id { get; set; }

    public string Name { get; set; }
}

 public DbSet<Building> Buildings { get; set; }
    public BandContext(DbContextOptions<BuildingContext> options)
        : base(options)
    {
    }
    protected override void OnModelCreating(ModelBuilder builder)
    {
        builder.Entity<Building>(entity => {
            entity.HasIndex(e => e.Name).IsUnique();
        });
    }  

我希望结果是这样的:

ID    Name
1     White house    OK
2     Green house    OK
3     White house    Unique constraint violation
1     Louvre         Unique constraint violation

我想我在这里遗漏了一些明显的东西。

【问题讨论】:

  • @progman 你是对的,这是 Stackoverflow 的复制错误。对帖子进行了编辑。
  • 什么不起作用?
  • 你怎么知道它不起作用?究竟是什么不工作?您的数据库中的表结构是什么?您是否已运行迁移以更新数据库架构?
  • @ErikEJ 我仍然可以添加双重名称,而不会出现任何警告或异常。添加具有相同名称的其他建筑物时,我预计会违反唯一约束。

标签: c# asp.net-core entity-framework-core


【解决方案1】:

您需要在此更改后添加迁移并在包管理器控制台中运行 Update-Database 以应用这些更改

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多