2012-10-07 8 views
7

私のエンティティフレームワーク4.3データベースの最初のプロジェクトを新しいエンティティフレームワーク5にアップグレードしました。 明らかに、私は今ObjectContextの代わりにDbContextを使用しています。 Entity Framework 5のLoadProperty

古い.edmxファイルを新しいものに置き換えました。私の古いビジネスコード、それは以前、私の4.3 .edmxファイルを使用していた今LoadPropertyメソッドを使用してコードに問題があります。

using (var context = new MyEntities()) 
{ 
    Models.User user = context.Users.First(x => x.GUID == guid); 
    context.LoadProperty(user, o => o.Settings); 
    return user; 
} 

LoadPropertyはDbContextで利用可能な方法ではないようです。

とにかく、厳密な型付き読み込みを取得するにはどうすればよいですか?

私は

context.Users.Include("Settings") 

を使用することとしたが、それは強い型付きやタイプミスを起こしやすいではありません。

+1

あなたに:ここ

context.Users.Include(u => u.Settings); 

を含める拡張メソッドに関するいくつかの情報です...

using System.Data.Entity; 

:これが含まれているため はDbExtensionクラスから来て、usingステートメントを忘れないでくださいObjectContextを使用している場合はEF4.3を使用していませんでした.EF4.3は基本的にDbContextに関するすべてのものでした。遅延読み込みが有効になっていると、明示的に読み込むことなく.Settingsプロパティを使用できます。データベースへのトリップを引き起こす可能性があるので注意してください。頻繁に行う場合は、下記のように.Include()を使用する方が安価かもしれません。 – Pawel

+0

@パベル:ああ申し訳ありません。私は更新後に遭遇した別の問題についての質問を読んで、私の状況をより良く説明するために「実用的」でそれを引用しました。私はその文章を打ちました。 – citronas

答えて

15

ラムダでもIncludeメソッドを使用できます。 msdn info

+0

恐ろしい!まさに私が探していたもの!私はあなたの答えは同じ問題を持つ他の人に役立つことを願って – citronas

+0

エピック拡張私は言う必要があります。強く型付けされているので素晴らしいです。 –

関連する問題