Entity Framework Core:有没有办法说一个条目在 2 个列值中是唯一的?

问题描述 投票:0回答:1

我的问题是在 Entity Framework Core 与 SQL 数据库对话的上下文中。

我有一个类如下:

public class County
{
        public int Id { get; set; }
        public string Name { get; set; }
        public int StateId { get; set; }
        public State State { get; set; }
}

我有每个州每个县的这些记录之一。

Name
不是唯一的,因为加利福尼亚和佛罗里达都有一个奥兰治县。然而,
Name + StateId
的组合是独一无二的

有没有办法在 Entity Framework Core 中指定它,以便它告诉 SQL 数据库强制执行该唯一性?并且

Id
应该保留PK所以我不想让
Name+StateId
成为复合primary键。

entity-framework-core composite-key
1个回答
1
投票

当然 -

你的例子是Code First.

你可以这样做:

public class County
{
    [Key]
    public int Id { get; set; }
    [Index("IX_Location", 2, IsUnique = true)]
    public string Name { get; set; }
    [Index("IX_Location", 3, IsUnique = true)]
    public int StateId { get; set; }
    public State State { get; set; }
}

“Id”仍然是你的主键;您的表有一个基于 Id 的聚集索引。但是您只需为“双列唯一性约束”创建一个 second 索引。在您想要的任何列上(例如 Name + StateId)。

© www.soinside.com 2019 - 2024. All rights reserved.