【发布时间】:2018-09-26 18:20:25
【问题描述】:
我有以下课程
public Building()
{
public int Id{Get; Set;};
public ICollection Bars{Get; Set;};
}
public Room()
{
public int Id{Get; Set;};
public int BuildingId{Get; Set;};
public Building Building{Get; Set;};
public string Name{Get; Set;);
}
我希望建筑物内的每个房间都有一个唯一的名称。但是我不能让 Name 属性唯一,因为不同的建筑物可以有相同的房间名称
Room Table
Id BuildingId Name
1 1 Kitchen
2 2 Kitchen //Should be allowed as different building
3 1 Kitchen //Should not be allowed
我能想到的唯一解决方案是在 BuildingId 和 Name 之间创建一个复合键。
modelBuilder.Entity<Room>().HasKey(r=> new {r.BuildingId, r.Name});
在 App 中获取房间会发生很多事情,将 Key 保持为一个简单的整数会简单得多。有没有办法让它成为一个独特的复合列而不使它成为键?
我相信我需要与 Index's 做一些事情,但我可以找到我所追求的工作示例。
【问题讨论】: