我正在使用实体框架5.导航属性未在实体更新后加载
否未放置上下文。
我有一些代码看起来是这样的......
IList<CarPassenger> myCarPassengers = carPassengerRepository.Where(cp => cp.CarID == carID);
RecordPassengersLastDrive(myCarPassengers);
// LINQ to Objects query
var backSeatPassengers = myCarPassengers.Where(cp =>
!cp.IsDriver &&
cp.Passenger.Status == "awake");
// Throwing NullReferenceException exception here
var passengerIDs = new List<int>(backSeatPassengers.Select(cp => cp.PassengerID);
...
private void RecordPassengersLastDrive(IList<CarPassenger> carPassengers)
{
foreach(CarPassenger passenger in carPassengers)
{
passenger.DrivingStatus = "driving";
passenger.LastDrive = DateTIme.Now;
}
}
我可以探查,它是为乘客测试状态进行查询看在LINQ查询中的Passenger中,当我在SQL Management Studio中执行该查询时,查询返回Passenger数据。真奇怪的是,如果我在RecordPassengersLastDrive前放置一个断点并检查carPassengers,Passenger属性不为null。如果我检查了更新后的轿厢,如果有两名乘客将会装载,另一名则不会。
我知道代码不理想,它应该在LINQ to SQL查询中预加载Passenger,并且是的,我也知道我们应该使用Entity Framework 6.0,当我们启动时它不可用。然而,当然,延迟加载应该一直工作?
有没有人遇到过这样的事情?或者可以提供另一种解释?
carPassengerRepository.Where returns IList <>。我更新了代码以使其更清晰。 但是,包括工作。加载集合时没有使用include是一个错误。我更关心代码的稳健性,以及我们相信懒惰加载工作的类似地方,事实并非如此。 – Mick 2014-11-21 06:06:04
懒惰的加载工程对IList集合的实体... http://stackoverflow.com/questions/22250246/entity-framework-lazy-loading-working-even-with-tolist – Mick 2014-11-21 06:10:02
并谢谢是的。我更新了==标志。我没有从比这更复杂的代码复制代码,而不是关于汽车;)。 – Mick 2014-11-21 06:12:13