C#EF编码一对多模型

C#EF编码一对多模型,c#,entity-framework,ef-code-first,C#,Entity Framework,Ef Code First,我有一个DB,看起来像这样: Houses - HouseId Rooms - RoomId HouseRooms - HouseRoomId - HouseId - RoomId class House { [Key] public virtual int HouseId{ get; set; } public DbSet<HouseRoom> Rooms{ get; set; } } class

我有一个DB,看起来像这样:

 Houses
    - HouseId
 Rooms
    - RoomId

 HouseRooms
    - HouseRoomId
    - HouseId
    - RoomId

class House
{
   [Key]
   public virtual int HouseId{ get; set; }


   public DbSet<HouseRoom> Rooms{ get; set; }
 }    

class HouseRoom
我只需要House实体/模式来加载所有房间记录。注意,连接表有一个PK名称HouseRoomId,但这不是需要匹配内部密钥的密钥。House.HouseId需要匹配HouseRoom.HouseId


我如何才能让它工作?

好的,首先这是一个
多对多
y,而不是
一对多
。其次,需要在
ModelCreation
上设置关系,以便
DbContext
了解此关系。此外,您需要使您的
列表
虚拟
,以便在需要时加载它。 请看这个例子。


另外,为了记录,您不需要指定
[键]
,默认情况下它已经在那里了

只是出于好奇,
房间
为什么/如何可以位于多个
房间
?它是一种非常像厨房、床1等的房间类型,每个房间都有一个平面布置图,每个平面布置图都有类似的房间类型。这个例子只是想了解如何首先让一对多的代码工作。啊,所以它更像是一个房间模板,而不是一个房间本身,我理解:)是虚拟人做的。我知道这是一个多对多,但我无法得到一对多加载。我想我现在有了。谢谢仍然不知道它如何知道如何映射关系。。
   public virtual int HouseId{ get; set; }
   public virtual int RoomId{ get; set; }

   [ForeignKey("RoomId")]
   Public Role RoomInfo {get; set;}
}

class Room
{ 
   [Key] 
   public virtual int RoomId {get; set;}

   public string RoomName {get; set;}
}