フィールドをデータベースに保存したいオブジェクトがあります。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;
}
作成するリストごとに新しいテーブルを作成する必要がありますか、それとも何か不足していますか?