2016-06-13 144 views
2

我在我的程序中使用實體框架,並且當記錄正在從表中移除時,表格鏈接的對象將變爲空值時出現問題。實體框架返回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

你的意思是爲什麼waitTravel.WantedTravels在你的if條件中爲null? – MJK

+0

是的,謝謝你 –

回答

1

我相信你在問什麼是waitTravel.WantedTravels爲什麼在你的if聲明中爲空。這是因爲您缺少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/zh-cn/library/dd456846(v = vs.100).aspx) – Igor