0

レイヤードアプリケーションで自己追跡エンティティを使用してEF4.1を使用しています。このアプリケーションは、WCFを使用して、クライアントとサーバーの間でエンティティをやり取りします。

私のデータベースの一部には、次の3つのテーブルが含まれています。

Customer
Contact
CustomerContacts

CustomerContactsCustomerとの2つの主キーのみが含まれているContactため、EDMはこれをナビゲーションプロパティとして表します-Customer.ContactsContacts.Customers。このCustomerContactsテーブルはモデル内で他の方法で表されていません。つまりCustomerContacts、このフォームの多対多の関係を表すときにEDM Designerの機能として理解し、期待するエンティティはありません。

状況は、にCustomerバインドされたsのリストがあり、で選択された時点でのみの関連するsComboBoxをロードしたいというものです。別の言い方をすれば、でaが選択されている場合に明示的な負荷をかけたいと思います。モデルにそれらを関連付ける結合エンティティがないため、のリストをフェッチするためにを使用することはできません。ContactCustomerComboBoxCustomer.ContactsCustomerComboBoxCustomer.IDWhereContacts

現在、の別のコピーを読み込んでCustomer、を使用Include("Contacts")してを取得し、Contactを介して設定していますselectedCustomer.Contacts = temporaryCustomer.Contacts;

冗長な一時的なコピーをフェッチする必要のない別の方法を知っている人はいCustomerますか?

4

1 に答える 1

1

選択した顧客についてはすでに知っているIdので、パラメータとしてWCFに渡し、顧客に関連する連絡先を照会できます。

var customerContacts = context.Contacts
                              .Where(c => c.Customers.Any(cu => cu.Id == passedId));

とにかく、このシナリオにより適していて、すぐに使用できる多くの機能(ナビゲーションプロパティのロードを含む)をサポートするWCFデータサービスを備えたSTEでWCFを置き換えることを検討する必要があります。

于 2012-07-09T09:29:45.603 に答える