【发布时间】:2020-10-25 12:38:28
【问题描述】:
我想在使用实体框架时将类的另一个属性设置为唯一。 我查看了有类似问题的其他页面,但答案没有达到我的预期。
现在我有一个简单的对象,其中 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