У меня запрос к DbContext что-то вроде:
ctx.Items.SingleOrDefault(i => i.Id == *someQueryThatReturns0*).Code
someQueryThatReturns0
- это запрос, который ищет Id, что-то вроде следующего:
otherItems.Where(h => h.Id == xyz).Select(s => s.OtherId).SingleOrDefault()
Когда этот внутренний запрос не имеет результатов, тогда внутренний SingleOrDefault
вернет 0, потому что идентификаторы являются int, и это означает, что внешний Items.SingleOrDefault(..)
должен привести к нулю.
Но при обращении к Items.SingleOrDefault(..).Code
вместо получения Исключение NullRef, оно будет просто нулевым.
Все это является частью большого запроса, в котором он используется для установки значений в Select (), что-то вроде:
someComplexQuery.Select(x => new someDto(){
...
someProp = x.Valid ? ctx.Items.SingleOrDefault(i => i.Id == *someQueryThatReturns0*).Code : null;
...
})
При выполнении запроса я бы ожидал исключение NullRef, но вместо этого someProp просто объединяется в null
в основном. Является ли это ожидаемым поведением просто потому, что ссылка на .Code
в запросе, подобном этому, будет как-то переведена в запрос SQL? Или я что-то здесь упускаю?