2016-05-27 3 views
1

私たちはいくつかのLINQクエリにインクルードを使用しています。しかし、インクルードメソッドのオーバーロードがパラメータとして(文字列パス)のみを表示し、データベーステーブル名を変更してエンティティを再生成し、インクルード部分がランタイムエラーを発生させる場合はどうでしょうか。どのようにコンパイル時にそのような問題をキャッチする?エンティティフレームワークの構文を含める

例:私たちは組織部門や他の何かにBusinessUnitエンティティ名を変更した場合、どのような

Material has BusinessUnit. 
So we use repo.Material.Include("BusinessUnit") 

+1

を利用使用するエンティティフレームワーク4.1以降を使用してする必要が

repo.Material.Include(m => m.BusinessUnit)

を使用することができるだろう。参照[ここ](http://stackoverflow.com/a/10843340/1504480) –

答えて

0

使用ここストロングタイプ

repo.Material.Include(m => m.BusinessUnit) 
+0

私はエンティティフレームワーク6.0を使用しています、何とか私はそのオーバーロードを取得していません。私はここに何かを逃していますか私がincludeでF12を押すと、私はpublic virtual DbQueryを参照してください。 Include(文字列パス);自分自身で過負荷を書く必要がありますか? –

+0

これはef 4.1から利用可能です。なぜあなたはオプションを取得していないのか分かりません。エンティティのスキーマを共有してください –

2

Include方法

ファイルに

using System.Data.Entity ; 

を次の参照を追加し、

Context.BusinessUnits.Load(); 
を使用して stringを使用して回避するために、以下のように使用

それとも

Context.Materials.Include(m => m.BusinessUnit).Where(...) 
0

、あなたはusing System.Data.Entity;名前空間を追加する必要があり、ラムダ式を使用していますIncludeの過負荷に使用するためには。オーバーロードはその名前空間に含まれます。そして、あなたは機能がすでにEntity Frameworkの4.1以降に存在していることを、この機能

関連する問題