c# - 如何将 List<> 作为字段存储在数据库中? - C#(SQL Server 精简版)

标签 c# database list sql-server-ce

我有一个对象,我想将其字段存储在数据库中。我将使用 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;
}

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

最佳答案

更新: 如果您是该主题的新手,这可能是对一对多关系的有用引用(特别是查看第二个也是最受欢迎的答案):Create a one to many relationship using 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
)

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

关于c# - 如何将 List<> 作为字段存储在数据库中? - C#(SQL Server 精简版),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15793601/

相关文章:

c# - 在 IEnumerable 集合中查找所有受抚养子女的最佳方法是什么

c# - XML 文件 C# 中的错误保存

mysql - Linux 上的 MariaDB |访问 .sql 数据库

python - 检索满足某些条件的字典

Python 'pointer arithmetic' - 快速排序

c# - 如何将 XAML View 文件与其代码隐藏文件重新连接?

c# - 捕获当前窗体在 WPF 中选择的屏幕?

java - MySQL 中的文本版本控制

mysql - 将 MySQL 查询转换为 HSQLDB 和 Oracle 查询

c# - 将非零余额账户加载到 DevExpress 树列表