[英]Database list of objects as property of class
我有一个包含几个属性的类box
,一个是一个id的计数器,该ID每次初始化新对象时都会增加,另一个属性是一个List<Item>
,其中包含许多Item
类型的对象,这是另一个具有其类型的类自己的属性(名称,重量等)。 我正在尝试为此应用程序构建数据库,但是我真的不知道如何在数据库中表示List<Item>
属性。 我是一个初学者,尤其是C#中的数据库,因此请尽可能清楚。
编辑
Item.cs
class Item
{
private string name;
private int price;
private int weight;
public Item() { }
public string Name
{
get { return name; }
set { name = value; }
}
public int Weight
{
get { return weight; }
set { weight = value; }
}
public int Price
{
get { return price; }
set { price = value; }
}
}
如果Box
具有Item
对象的集合,则您的数据库将为此具有两个表:
Boxes
----------
ID
Name
etc.
Items
----------
ID
BoxID
Name
etc.
诸如Name
etc.
之类的属性将是描述该类型的任何给定实例的属性。 ID
值是项目的唯一标识符。 这里要注意的主要事情是Items
的BoxID
列。 对于任何给定的Item
都有对包含它的Box
的引用。
因此,将Box
对象保存到数据库时,首先要保存对象本身,然后在指定ID
保存所有Item
对象。
这称为“一对多”关系。 “一个” Box
具有“很多”(在这种情况下为零或更多) Item
。
编辑:根据下面的评论,您是说这将是一个多对多关系? 如果是这种情况,那么您需要一个表来保存关系本身。 像这样:
Boxes
----------
ID
Name
etc.
Items
----------
ID
Name
etc.
BoxItems
----------
BoxID
ItemID
任何Box
可以涉及到很多Item
S和任何Item
可以涉及到很多Box
上课。 考虑到关系本身是模型中的“实体”。
为了帮助形象化,一个很常见的例子是电影和演员。 一个人可以拥有一部电影和一组演员,它们之间有着明显的联系。 但是关系本身是具有自己描述元素的实体。 该关系链接到电影,并链接到演员,但还包含“角色名称”或“合同工资”之类的信息。
注意:至少在语义上,这种方法对于您的域似乎没有任何意义。 一个Item
如何同时存在于多个Box
?
如果要建立一对多关系,则您的类如下所示:
public class Box
{
public Box() { }
public int BoxId { get; set; }
public string BoxName { get; set; }
public virtual Item Item { get; set; }
}
public class Item
{
public Item()
{
Boxes = new List<Box>();
}
public int ItemId { get; set; }
public string Description { get; set; }
public virtual ICollection<Box> Boxes { get; set; }
}
按照下面的文章,它还说明了如何创建外键以及所有内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.