我的问题是在 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键。
当然 -
你的例子是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)。