我有一个看起来像这样的数据库:
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。
我怎样才能让它发挥作用?
答案 0 :(得分:2)
好的,首先这是many-to-man
y,而不是one-to-many
。其次,您需要在ModelCreation
上设置关系,让DbContext
了解这种关系。此外,您需要让List<Room>
virtual
使其能够在您需要时加载。
请看这个例子。
Code First Entity Framework Many-to-Many relationships
此外,对于记录,您无需指定[key]
,默认情况下它已经存在