小编Ben*_*min的帖子

实体框架(核心),非关键的独特“复合列”

我有以下课程

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;); 
}
Run Code Online (Sandbox Code Playgroud)

我希望建筑物内的每个房间都有一个唯一的名称。但我不能使 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
Run Code Online (Sandbox Code Playgroud)

我能想到的唯一解决方案是在 BuildingId 和 Name 之间创建一个复合键。

modelBuilder.Entity<Room>().HasKey(r=> new {r.BuildingId, r.Name});
Run Code Online (Sandbox Code Playgroud)

App 中会出现很多取房间的情况,把 Key 保持为一个简单的整数会简单得多。有没有办法让它成为一个独特的复合列而不让它成为关键?

我相信我需要与索引有关,但我可以找到我所追求的工作示例。

entity-framework-core

6
推荐指数
1
解决办法
1663
查看次数

标签 统计

entity-framework-core ×1