我在程序中使用了Entity Framework,当从表中删除记录时,表链接的对象变为NULL时出现问题。

而不是做

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)


知道有什么可以帮助我的吗?

最佳答案

我相信您要问的是为什么waitTravel.WantedTravels语句中的if为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();




如果这不是您要问的问题,请澄清您的问题。

07-24 22:28