В этом методе выполняется проекция:
public async Task<TradeDetail> Get(int tradeId)
{
var firstOrDefaultAsync = await context.EvgTGTrade
.Where(x => x.IdTrade == tradeId)
.Select(trade => new TradeDetail
{
Id = trade.IdTrade,
Code = trade.CdTrade,
Description = trade.DeTrade,
Comments = trade.DeComentarios,
TypeId = trade.IdTipoTrade,
BrokerId = trade.EvgTGBrokerTrade.FirstOrDefault().IdBroker,
BillingCycleId = trade.IdCicloFacturacion,
CounterpartId = trade.IdSujeto,
StartDate = trade.FhIni,
EndDate = trade.FhFin,
SignatureDate = trade.FhFirma,
Positions = trade.EvgTGPosicion.Select(pos => new Position
{
Amount = pos.Cantidad,
Code = pos.CdPosicion,
Description = pos.DePosicion,
LogisticElement = pos.IdElemLogNavigation.DeElemLog,
StartDate = pos.FhIni,
EndDate = pos.FhFin,
FormulaId = pos.IdFormula,
Operations = pos.EvgTGOperacionCv.Select(op =>
new Operation()
{
TypeId = op.IdTipoOperacion,
Fee = op.Fee,
Date = op.FhOperacionCv,
Price = op.NmPrecio ?? 0,
Quantity = op.NmCantidadKwh ?? 0,
}),
})
})
.FirstOrDefaultAsync();
return firstOrDefaultAsync;
}
В первой строке я получаю исключение, сообщающее
Microsoft.EntityFrameworkCore.Query: Ошибка: Возникла исключительная ситуация при переборе результатов запроса для типа контекста 'SampleApp.EF.MyDbContext'. System.InvalidOperationException: Nullable-объект должен иметь значение.
Я проверил исключение и трассировку стека, и он ничего не говорит о том, что является проблемным c объектом. Понятия не имею, что не так.
Итак, есть ли способ узнать, какое свойство порождает конфликт? Я уверен, что это несоответствие столбца свойств, но что, если у вас много свойств? Это довольно больно!
Обновление
Я уже исправил проблему. Я был из-за попытки присвоить значение null свойству в моей модели, которое не могло быть обнулено.
Тем не менее, этот вопрос не об этом конкретном исправлении, а о поиске общего способа отладки такого рода ситуаций (это исключение), которые довольно распространены. ИМХО, сообщение об исключении слишком расплывчато. Он не предоставляет полезной информации о конфликтующем свойстве.