У меня есть этот код, вызывающий исключение NullReferenceException. Я ожидал бы, что Lazy загрузится, чтобы начать с точки зрения оценки лямбды и перейти к базе данных, получающей навигационное свойство (последняя строка). Я решил это, используя Id напрямую, но мне любопытно, может ли кто-нибудь указать мне любую документацию, которая объясняет, что здесь происходит и почему это не работает.Linq Lambda и EF Lazy loading - NullReferenceException
using (var context = new TestEntities())
{
var entity = context.Entities.First();
entity.NavigationPropertyId = 24; // This is a valid id, i.e. there is a record with Id 24 in the database
var otherEntity = context
.OtherEntities
.SingleOrDefault(x =>
(x.NavigationPropertyId == entity.NavigationProperty.Id)); // << This raises the NullReferenceException
}
На одной строке вы 'entity.NavigationPropertyId =', 'позже entity.NavigationProperty.Id', т.е.' Id' становится свойством 'NavigationProperty' в второй случай. Является ли это опечаткой или причиной вашей проблемы? –
Очевидно, что либо 'x' является' null', либо 'entity.NavigationProperty' является' null'. –
Лассе, это не дубликат. Я знаю, что такое NullReferenceException. X не может быть нулевым, поскольку это предикат лямбда-выражения. Навигационная технология явно нулевая, но я ожидаю, что она будет ленивой, и, следовательно, мой вопрос. – Klaws86