我有一个类box
,它包含很少的属性,一个是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; }
}
}
答案 0 :(得分:2)
首先,您需要至少两个表,一个用于盒子,一个用于物品。如果一个项目可以属于多个框以及一个具有多个项目的框,则需要一个中间表(见下文):
在容器表中,您应该:
在Boxes表格中,您需要:
在Items表中,您需要:
答案 1 :(得分:1)
如果Box
有一组Item
个对象,那么您的数据库将有两个表格用于此:
Boxes
----------
ID
Name
etc.
Items
----------
ID
BoxID
Name
etc.
Name
和etc.
之类的东西将是描述该类型的任何给定实例的属性。 ID
值是项目的唯一标识符。这里需要注意的主要问题是BoxID
中的Items
列。对于任何给定的Item
,都会引用包含它的Box
。
因此,当您将Box
对象保存到数据库时,首先要保存对象本身,然后在给定ID
的情况下保存所有Item
个对象。
这被称为“一对多”关系。 “一个”Box
有“很多”(在这种情况下为零或更多)Item
s。
修改:根据您在下面的评论,您的意思是这是多对多关系吗?如果是这种情况那么你需要一个表来保持关系本身。像这样:
Boxes
----------
ID
Name
etc.
Items
----------
ID
Name
etc.
BoxItems
----------
BoxID
ItemID
任何Box
都可以与许多Item
相关,任何Item
都可以与许多Box
相关联。考虑关系本身是模型中的“实体”。
为了帮助想象这一点,一个非常常见的例子是电影和演员。人们可以拥有一系列电影和一系列演员,他们之间有明显的联系。但关系本身是一个拥有自己描述元素的实体。关系链接到电影,链接到Actor,但也包含“角色名称”或“合同工资”等信息。
注意:对于您的域,这种方法对于您的域至少在语义上似乎没有意义。一个Item
如何同时存在于多个Box
es?
答案 2 :(得分:0)
如果你想拥有一对多的关系,你的课程将如下所示:
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; }
}
按照下面的文章,它还解释了如何创建外键和所有内容。