2017-09-26 8 views
1

関連するDepartmentエンティティを持つPersonのリストを返すSQL文があります。 PersonクラスにはDepartment IDがあり、エンティティフレームワークの魔法を使って、データベースからロードするときに正しいDepartmentオブジェクトを関連付けます。SQL照会でEFをロードする関連エンティティ

私のSQL文は次のとおりです。

私は、クエリを実行MSSMSで
SELECT * 
FROM PERSON 
    INNER JOIN DEPARTMENT ON PERSON.DEPARTMENT_ID = DEPARTMENT.ID 
WHERE UPPER(FORENAME) LIKE '%RALPH%' 
ORDER BY SURNAME 

私は次のような結果を得る:

enter image description here

しかし

、私はDbSet.SqlQueryを使用してSQLを実行するとき( )私は以下の結果を得ます:

enter image description here

最初の項目で部門オブジェクトがどのようにNULLになっていても、2番目の項目にはどのようにデータが格納されているかに注意してください。

私は多くの情報を提供していないことを知っていますが、私はそこに単純な答えがあることを望んでいます。ところで

あなたが見ることができるようにLazyLoadingEnabledがfalseに設定されている

..私はこれをtrueに変更しても問題が解決します知っています。私はそれが必要かどうかを呼び出すためにそれを有効にするつもりはない。以前にそのDbContextインスタンスに部門をロードした場合は

みんなありがとう

+1

なぜあなたは適切なEFクエリではなく 'SqlQuery'を使用していますか? – DavidG

+0

私はフィルタを実行する人々のリストを持っています。私はSQL文を生成するユーザが提供する基準を使用します。検索の潜在的なバリエーションがたくさんあるので、SQL文がやり方のように思えました。 – Murphybro2

+0

EFを使用することにはほとんど意味がありません。 – DavidG

答えて

1

、EF変更の追跡は、それがすでにDepartmentIdの= 2と部門を持っていることを認識し、そのインスタンスにナビゲーションプロパティを設定します。

関連する問題