2016-06-13 52 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