我正在设计一个数据库来保存办公设备的库存,但在很多情况下,一个房间将包含一个相同项目的倍数,就像一个会议室有3个相同的电视屏幕。存储序列号和诸如此类并不重要;只有数量才重要。
我希望避免重复输入相同的信息(电视、等离子、1920x1080、50“等等),所以我想要的只是一个电视表,其中包含每种型号之一,然后将这些条目链接到房间表中的一个特定条目,每次输入一次。结果是这样的:
public class Television
{
public int ID { get; set; }
// ...
// keep track of rooms containing this model
public virtual ICollection<Room> Rooms { get; set; }
}
public class Room
{
public int ID { get; set; }
// ...
public virtual ICollection<Television> Televisions { get; set; }
}问题是,通过这种设置,您实际上只能将电视机表的每一行链接一次到房间表的一行,而我想将其链接3次。做这件事最好的方法是什么?
发布于 2013-11-07 01:35:47
如果您想要使电视和房间有许多到许多关系,您需要使用连接表为他们。例如,创建连接表调用TelevisionRooms,并在连接表中创建quantity属性。它应该能解决这个问题。见下文:
public class Television
{
public int TelevisionID { get; set; }
public int ModelID { get; set; }
public virtual ICollection<Room> Rooms { get; set; }
}
public class Room
{
public int RoomID { get; set; }
//
public virtual ICollection<Television> Televisions { get; set; }
}
public class TelevisionRoom
{
public int TelevisionID { get; set; }
public int RoomID { get; set; }
public int Quantity { get; set; }
}
public class Model
{
public int ModelID { get; set; }
public string ModelName { get; set; }
}希望能帮上忙。
https://stackoverflow.com/questions/19825875
复制相似问题