繁体   English   中英

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

[英]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; }
    }
}

首先,您将至少需要两个表,一个用于盒子,一个用于物品。 如果一件物品可以属于多个盒子,而一个盒子可以包含多个物品,那么您将需要一个中间表(见下文):

在此处输入图片说明

在容器表中,您应该具有:

  1. 容器编号
  2. FK_BoxID
  3. FK_ItemID
  4. 等等...

在Boxs表中,您将需要:

  1. BoxID
  2. [框相关字段]

在项目表中,您将需要:

  1. 物品ID
  2. [项目相关字段]

如果Box具有Item对象的集合,则您的数据库将为此具有两个表:

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

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

诸如Name etc.之类的属性将是描述该类型的任何给定实例的属性。 ID值是项目的唯一标识符。 这里要注意的主要事情是ItemsBoxID列。 对于任何给定的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; }
}

按照下面的文章,它还说明了如何创建外键以及所有内容。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM