Solución:
Creo que esta confusa excepción ocurre cuando usa una variable en una lambda que es una referencia nula en tiempo de ejecución. En su caso, comprobaría si su variable cálculoViewModel es una referencia nula.
Algo como:
public ActionResult MNPurchase()
{
CalculationViewModel calculationViewModel = (CalculationViewModel)TempData["calculationViewModel"];
if (calculationViewModel != null)
{
decimal OP = landTitleUnitOfWork.Sales.Find()
.Where(x => x.Min >= calculationViewModel.SalesPrice)
.FirstOrDefault()
.OP;
decimal MP = landTitleUnitOfWork.Sales.Find()
.Where(x => x.Min >= calculationViewModel.MortgageAmount)
.FirstOrDefault()
.MP;
calculationViewModel.LoanAmount = (OP + 100) - MP;
calculationViewModel.LendersTitleInsurance = (calculationViewModel.LoanAmount + 850);
return View(calculationViewModel);
}
else
{
// Do something else...
}
}
Normalmente sucede cuando el objetivo es nulo. Así que mejor verifique primero el objetivo de invocación y luego haga la consulta linq.
Descubrí que este problema es frecuente en Entity Framework cuando creamos una instancia de una entidad manualmente en lugar de a través de DBContext, que resolverá todas las propiedades de navegación. Si hay referencias de clave externa (propiedades de navegación) entre tablas y usa esas referencias en su lambda (por ejemplo, ProductDetail.Products.ID), entonces ese contexto de “Productos” permanece nulo si creó manualmente la Entidad.