C#EF代码首先是一对多模型

时间:2013-06-04 00:37:38

标签: c# entity-framework ef-code-first

我有一个看起来像这样的数据库:

 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

{        [键]        public virtual int HouseRoomId {get;组; }

   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;}
} 

我只需要House实体/模式来加载所有房间记录。注意到JOIN表有一个PK名称HouseRoomId,但这不是需要匹配House中的键的键。 House.HouseId需要匹配HouseRoom.HouseId。

我怎样才能让它发挥作用?

1 个答案:

答案 0 :(得分:2)

好的,首先这是many-to-man y,而不是one-to-many。其次,您需要在ModelCreation上设置关系,让DbContext了解这种关系。此外,您需要让List<Room> virtual使其能够在您需要时加载。 请看这个例子。 Code First Entity Framework Many-to-Many relationships

此外,对于记录,您无需指定[key],默认情况下它已经存在