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