数据库对象列表作为类的属性

时间:2015-11-20 15:55:55

标签: c#

我有一个类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; }
    }
}

3 个答案:

答案 0 :(得分:2)

首先,您需要至少两个表,一个用于盒子,一个用于物品。如果一个项目可以属于多个框以及一个具有多个项目的框,则需要一个中间表(见下文):

enter image description here

在容器表中,您应该:

  1. 数据筒
  2. FK_BoxID
  3. FK_ItemID
  4. 等...
  5. 在Boxes表格中,您需要:

    1. BoxID
    2. [方框相关字段]
    3. 在Items表中,您需要:

      1. 的ItemID
      2. [项目相关领域]

答案 1 :(得分:1)

如果Box有一组Item个对象,那么您的数据库将有两个表格用于此:

Boxes
----------
ID
Name
etc.

Items
----------
ID
BoxID
Name
etc.

Nameetc.之类的东西将是描述该类型的任何给定实例的属性。 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; }
}

按照下面的文章,它还解释了如何创建外键和所有内容。

http://www.entityframeworktutorial.net/code-first/configure-one-to-many-relationship-in-code-first.aspx