2

私はEntityFrameworkの調査を始めたばかりで、本当に素晴らしいです!しかし今、私は質問があります。私のデータベース「Products」には、テーブルのProduct、Component、Product_Component(多対多の接続)があります。c#プロジェクトで.edmxファイルを作成し、この3つのテーブルを選択しました。これで、テーブルのリストボックスアイテムを表示できます。たとえば、次を使用してProductsテーブルのすべての行を表示できます。

ProductsEntities db = new ProductsEntities();
LstBox.ItemsSource = db.Product;

しかし、すべてにのProductコレクションがありComponents、たとえば、インデックス2にあるコレクションをバインドしたいと思いComponentsますProduct(テーブルの製品「ケーキ」にはProductComponent「suqar」、「salt」、「flour」があります)。どうすればこれを作ることができますか?インデックスで取得しようとしましProductたが、機能しません。ばかげた質問かもしれませんが、ごめんなさい、助けてください。

4

1 に答える 1

3

[製品]->[コンポーネント1x製品]->[多くのコンポーネント]から直接関係を作成できなかった理由。なぜ必要なのかProduct_Component。私が言ったようにあなたがそうするなら、あなたはあなたがそのように望むものを簡単に手に入れることができます:

db.Products.First(e=>e.Id==2).Components.ToList();

id=2の製品のコンポーネントのリストを取得します。

編集:

そのように使用する

List<Component> components = new List<Component>();
db.Products.First(e=>e.Id==2).Product_Components.ToList().ForEach(e=>components.Add(e.Component));

製品への新しいコンポーネントの追加:

Product someProduct = db.Product.First(e=>e.Name=="coolProduct")
Component component = db.Component.First(e=>e.Name=="Fish");
someProduct.Product_Component.Add(new Product_Component(){Component=component...});
db.SaveChanges();

製品に新しいコンポーネントを追加する新しい方法:

Product someProduct = db.Product.First(e=>e.Name=="coolProduct")
Component component = db.Component.First(e=>e.Name=="Fish");
Component_Product component_product = new Component_Product(){Component = component, Product = product};
db.SaveChanges();

新規-新規ソリューション:

Product someProduct = db.Product.First(e=>e.Name=="coolProduct")
Component component = db.Component.First(e=>e.Name=="Fish");
Component_Product component_product = new Component_Product(){Component = component, Product = product};
db.Component_Product.Add(component_product);
db.SaveChanges();
于 2013-02-15T08:58:26.883 に答える