1

我有一个对象,我想将其字段存储在数据库中。我将使用 SQL Server Compact Edition(带有 Visual C# Express 2010)。作为记录,我对使用数据库(以及一般的数据库)进行编程是相当新的。该程序将每天用于阅读电子邮件、处理其中的订单、存储它们并在必要时访问它们以帮助完成订单。订单列表将变得非常大,无法存储在列表中、写入文件、从文件创建列表等。问题是每个订单都包含所购买商品的列表。我知道我可以用二进制或 XML 序列化列表,并将该数据用作字段。但是,这会阻止我根据该列表进行搜索/选择。例如,如果我想根据里面的物品来查找订单,或查看特定商品的购买次数。由于列表的大小是任意的,我不能只创建一堆字段并只填写我需要的字段(在我看来,这无论如何都是个坏主意)。

在写这篇文章时,我意识到了一个错误。如果我再次序列化列表,我可以比较序列化的数据以再次找到相同的列表(虽然,这假设相同的数据每次都以相同的方式序列化)。但是,我仍然无法找到任何特定的项目。

那么,有没有办法将项目列表存储在固定数量的字段中(最好是 1 个),并且仍然能够通过查询搜索其内容(我很可能会使用 LINQ)?

编辑:解决我到目前为止所得到的:首先,谢谢!我开始拼凑我必须做的事情,但我并不完全在那里。共识似乎是每组项目都有一个表格。这是否意味着我每个月都会创建数千张表?

重新阅读我的问题后,我意识到我必须更清楚。收到订单后,我解析数据并将其存储在 Order 对象中,该对象由客户信息和商品列表组成。这是我要存储的简化版本:

class Order{
    private DateTime date;
    private String orderNumber;
    private String buyerName;
    private List<Item> items;
    private String address;
}

class Item{
    private String itemCode;
    private String description;
    private int quantity;
}

那么我是否必须为我创建的每个列表创建一个新表,或者我错过了什么?

4

3 回答 3

5

更新: 如果您是该主题的新手,这可能是一对多关系的有用参考(特别是查看第二个也是最受好评的答案):使用 SQL Server 创建一对多关系

您需要在数据库中为您的订单项创建一个新表,然后创建与订单表的外键关系。这将是一对多的关系。像下面这样的东西 - 显然你需要创建一个 FK 关系,但你明白了要点。

现存的

CREATE TABLE Order (
  OrderID INT,
  PONumber VARCHAR,
  ItemsList VARCHAR
)

新的

CREATE TABLE Order (
  OrderID INT,
  PONumber VARCHAR
)

CREATE TABLE LineItem(
  LineItemID INT,
  Description VARCHAR,
  Quantity INT,
  SequenceNumber INT,
  OrderID INT -- <--- Important one here
)

请注意,如果您只想创建一个简单的查找,则关系将相反。

于 2013-04-03T17:05:13.360 回答
0

您可以创建一个单独的表来保存它的项目,而不是将列表存储为字段。此 ListTable 中的记录将有一个字段指向原始表中的记录 ID。这样你就可以在之后编写各种查询。

于 2013-04-03T17:03:52.573 回答
0

这可以通过多种方式解决,但如果您希望能够直接查询数据,则应该使用单独的表重新设计数据库,在该表中存储带有参考 ID 的列表数据。毕竟,数据库都是关于数据列表的。

于 2013-04-03T17:04:01.043 回答