C#EF编码一对多模型
我有一个DB,看起来像这样: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
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;}
}