2016-06-13 1 views
2

私のプログラムでEntity Frameworkを使用しています。レコードがテーブルから取り除かれているときにテーブルリンクオブジェクトがNULLになると問題が発生します。Entity FrameworkがNULLリンクオブジェクトを返します。C#

代わりの

waitTravel = db.WaitTravels 
       .Where(w => w.suggestTravelId == suggestTravelId && 
          w.wantedTravelId == wantedTravelId) 
       .First(); 

if (waitTravel.WantedTravels.statusTravelId != 1) 

をやって、私はそれを行う必要があります。

if (db.WantedTravels.Where(w => w.id == waitTravel.wantedTravelId).First().statusTravelId != 1) 

は私を助けるために何かを知っていますか?

+0

if条件でwaitTravel.WantedTravelsがnullになっているのはなぜですか? – MJK

+0

はい、ありがとう –

答えて

1

ifの文では、なぜwaitTravel.WantedTravelsがnullであるのかとお考えになると思います。これは、includeステートメントが不足していて、遅延読み込みを有効にしていないためです。

これを達成するための追加オプションについては、Loading Related EntitiesのEFドキュメントを参照してください。最も簡単な、そしてIMOの最良の方法は、関連プロパティ/コレクションを取得することがわかっているときに、Includeを明示的に使用することです。

waitTravel = db.WaitTravels 
       .Where(w => w.suggestTravelId == suggestTravelId && 
          w.wantedTravelId == wantedTravelId) 
       .Include(w => w.WantedTravels) // added 
       .First(); 

これは、あなたが、あなたの疑問を明確にしてください求めているものではない場合。

+0

ありがとう!それは素晴らしい仕事です!もし私がそれをしたい場合 –

+0

一般的な方法でこれを行う方法は、プログラム全体ですか? –

+1

@ R.H - 'DbContext'全体に対して遅延ロードを有効にすることができます。 [方法:関連オブジェクトを読み込むためにレイジー読み込みを使用する方法](https://msdn.microsoft.com/en-us/library/dd456846(v = vs.100).aspx)を参照してください。 – Igor

関連する問題