次の形式のデータがあると仮定します
Customer1
Name
Address
Order1
ID
Products
Product1
ID
Product2
ID
Customer2
...
次のクラスを使用してそれを表します
class Customer
{
public String name { get; set; }
public String Address {get; set;}
public List<OrderInfo> Orders { get; set; }
}
class Order
{
public int ID { get; set; }
public List<Product> Products { get; set; }
}
class Product
{
public int ID { get; set; }
}
エンティティ フレームワークと SQL を使用する代わりに、XML シリアライゼーションを使用してデータを読み書きしたいと考えています。エンティティ フレームワークを使用すると、多対 1 の関係を定義して、各製品がデータベースに 1 回だけ格納され、各注文がそれを参照するだけになるようにすることができます。上記のコードを XML シリアライゼーションで使用すると、(メモリと XML ファイルの両方に) 各製品のコピーが多数保存されることが理解できます。
これを修正するには、製品自体の代わりに製品 ID のリストを保存してから、「製品」の別のコレクションを別の XML ファイルにシリアル化することができますが、それはクリーンなソリューションとは思えません。
別のアイデアは、顧客と製品のリストを含む RepositoryClass を持つことです。その後、顧客はproductIDを保存するだけで済み、レポから「顧客」を要求すると、上記のオブジェクトの検索と構築が処理されるため、残りのコードはデータがどのように保存されたかを心配する必要がありません. それはより良い解決策のように聞こえますか?どのようにしますか?
ソリューションのもう1つの要件は、ソリューションをGUIに接続してプロパティを直接編集することをできるだけ簡単にしたいということです(実際には、バインドできる1つのXMLファイルにすべてを保存する方法が必要です) WPF ウィンドウ)。
ご意見やアドバイスをお寄せいただきありがとうございます。