私はテーブルのカップルを持っていると仮定します。MSエンティティフレームワークのサーバー側で関連エンティティをロードする方法は?
person(personid, name, email)
employee(personid,cardno, departmentID) //personid,departmentID is foreign key
department(departmentID, departmentName)
employeePhone(personID, phoneID) //this is relationship table
phone(phoneID, phonenumer)
EntityFrameworkが従業員のためのエンティティクラスを生成する場合、このクラスは次のようにメンバーを持っています。このクラスがロードされると、デフォルトで
public partial class employee{
int _personid;
string _cardno;
string _departmentName;
person _person;
department _department;
//......
}
可能なデータのみを従業員表の列の場合、関連エンティティのデータはロードされません。 Linqを使用してクライアント側でデータを取得する場合は、linqクエリにIncludeを使用する必要があります。
私の質問は:従業員がサーバー側でインスタンス化されるときに、サーバー側で読み込まれる関連エンティティデータにしたいです。ですから、クライアント側でエンティティを取得すると、すべてのデータがすでに利用できるようになり、UIに簡単にバインドできます。
このリクエストを実装する方法は?
非常に良好です。しかし、質問です。エンティティにバインドしないと、データCUIDはどうですか? CUID用のコードをすべて自分で作成する必要があります。エンティティにUIをバインドすると、riaサービスのようないくつかのコード生成エンジンを再利用できます。あなたのソリューションは、読み取り専用のデータ用です。 – KentZhou
いいえ、読み取り専用データではありません。それは*書くために*二重*重要です。私が言ったように、ビューモデルなしでは、ユーザー更新をホワイトリスト/ブラックリストに登録し、ユーザーデータをエンティティタイプに変換するか、最悪の場合、UIとバックエンド間の最も深いカップリングであるEF対応UIを作成する必要があります。答えを明確にして更新します。 –
クレイグ、私もKentZhouのコメントに対するあなたの反応に興味があります。たとえば、EmployeePresentationオブジェクト(従業員番号と従業員名)の両方の値を更新するUI画面があるとします。プレゼンテーションをサービスまたはBLLレイヤーに戻すときは、常にEmployeesテーブルとPersonテーブルの両方を更新するだけですか? 従業員の更新と個人レコードの更新(データのさまざまなビュー)を更新するだけの場合に、さまざまなサービスを記述していますか? – Jay