0

私は2つのテーブルemployeeemployeedetailsを持つシンプルなデータベースを持っています。Linqが参照する外部キー参照データ

employeeは、従業員

var employeeList = from employee in objectcontext.employees select employee; 
return employeeList.ToList(); 

を返すためにempdetailsid FOREIGNKEYテーブルを指すemployeedetails

私の簡単なLINQクエリも、私は必要としないをEmployeeDetailsとそのすべて含まれているフィールドを返しました。 私はEntity Framework 4.0を使用しています。不要なデータをすべて取得しないようにする方法はありますか? 私は従業員テーブルフィールドを持つモデルクラスを定義してロードすることができましたが、単純な方法があるかどうか疑問に思っていました。私はmysqlデータベースを使用しています。

+0

コンテキストがに設定されたオプションを持っていない限り、通常はEF4は、遅延ロードをしますか動作を変更します。 objectcontextに関連付けられたすべてのコードを見てください。 。 。私はあなたが怠惰な読み込みを無効にしたことを推測しています。 – Frank

答えて

2

クエリで従業員の詳細が返されることをどのように知っていますか?生成されたSQLクエリを確認しましたか、またはEmployeeDetailsオブジェクトにアクセスしようとしましたが、データを取得しましたか? 2番目のケースでは、EFは実際に(アクセスしようとすると)オンデマンドでデータを遅延ロードすることができます。あなたは余分なデータが初期クエリの実行中にフェッチなる確信している場合はそうでない場合は、クエリを実行する前に、遅延ロードを有効に暗黙のうちに試してみてください。

objectcontext.ContextOptions.LazyLoadingEnabled = true; 
+0

私はそれが怠惰であり、私は不必要にパニックになると思います。とにかくlazyloadingenabledをtrueに設定してください。ありがとう。 – user275157

1

私はef 4を使用していませんが、ほとんどのormは遅延読み込みという概念を使用する傾向があります。関連する従業員の詳細内のデータは、そのオブジェクトに呼び出しが行われたときにのみ取得されます。デバッガのオブジェクトを見ると、そのオブジェクトをクリックすると特定の従業員の詳細のデータが取得されます。どのデータが取得されているかを確認するには、SQLクエリをトラップするためにデータベースに対してプロファイラを実行する必要があります。 mysqlにSQL Serverのようなプロファイラが組み込まれているかどうかはわかりません。 nhprofをチェックアウトしない場合。