tutorial net mvc framework first español asp c# asp.net-mvc asp.net-mvc-3 entity-framework entity-framework-5

c# - net - Método no estático requiere un objetivo



entity framework mvc 5 (5)

Creo que esta excepción confusa ocurre cuando usas una variable en un lambda que es una referencia nula en tiempo de ejecución. En su caso, me gustaría comprobar si su variable computingViewModel 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... } }

Tengo una acción de controlador que funciona bien en Firefox tanto localmente como en producción, e IE localmente, pero no IE en producción. Aquí está mi acción del controlador:

public ActionResult MNPurchase() { CalculationViewModel calculationViewModel = (CalculationViewModel)TempData["calculationViewModel"]; 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); }

Aquí está la traza de pila que obtengo en IE:

Error. Se produjo un error al procesar su solicitud. System.Reflection.TargetException: el método no estático requiere un destino. at System.Reflection.RuntimeMethodInfo.CheckConsistency (Objeto objetivo) en System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck (Objeto obj, BindingFlags invokeAttr, Vigilancia) BindingFlags invokeAttr, Binder Binder, Object [] parameters, CultureInfo culture) en System.Reflection.RuntimePropertyInfo.GetValue (Object obj, Object [] index) en System.Data.tybject.ELinq.QueryParameterExpression.TryGetFieldOrProper Object & memberValue) en System.Data.Objects.ELinq.QueryParameterExpression.TryEvaluatePath (Expresión de expresión, ConstantExpression y constantExpression) en System.Data.Objects.ELinq.QatayParameterExpression.EvaluateParameter (Object [] argumentos) en el sistema. .GetExecutionPlan (Nullable 1 forMergeOption) at System.Data.Objects.ObjectQuery 1.GetResults (Nullable 1 forMergeOption) at System.Data.Objects.ObjectQuery 1 forMergeOption) at System.Data.Objects.ObjectQuery 1.System.Collections.Generic.IEnumerable.GetEnumerator () en System.Linq.Enumerable.FirstOrDefault [TSource] (IEnumerable 1 source) at System.Linq.Queryable.FirstOrDefault[TSource](IQueryable 1 source) .HomeController.MNRefi () at lambda_method (Closure, ControllerBase, Object []) en System.Web.Mvc.ReflectedActionDescriptor.Execute (ControllerContext controllerContextpacepccccccccccncccncccncccnccnccccncccncccncccncccncccnccccnccccnccccccnccccnccccncccccnccccccnccccccnccccccnccccccncccccccnccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccnccccccccccncc. 2 parameters) at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary parámetros de 2 parameters) at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary 2) en Castle.Proxies.Invocations.ControllerActorActualidad de la v. () en Castle.Proxies.AsyncControllerActionInvokerProxy.InvokeActionMethod (ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary `2 parámetros) en System.Web.Mvc.Async.AsyncControllerActionInvoker. <> c__DisplayClass37. <> c__DisplayClass39.b__33 () artículos de inspección de personas. Web.Mvc.Async.AsyncControllerActionInvoker. <Acceso.as.cerca de.Peligro.Payla. <> c__DisplayClass25.b__22 (IAsyncResult asyncResult)


Descubrí que este problema prevalece en Entity Framework cuando creamos una Entidad de forma manual 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 las tablas y usa esas referencias en su lambda (por ejemplo, ProductDetail.Products.ID), entonces el contexto de "Productos" permanece nulo si creó la Entidad manualmente.


Me enfrento a este error al probar WebAPI en la herramienta Postman.

Después de compilar el código, si eliminamos alguna línea ( por ejemplo: en mi caso, cuando elimino una línea comentada, ocurrió este error ... ) en el modo de depuración, se producirá el error "El método no estático requiere un objetivo ".

De nuevo, traté de enviar la misma petición. Este código de tiempo funciona correctamente. Y recibo la respuesta correctamente en Postman.

Espero que sirva para alguien ...


Normalmente sucede cuando el objetivo es nulo. Así que mejor compruebe primero el destino de invocación y luego haga la consulta linq.


Todas las respuestas apuntan a una expresión Lambda con una NRE (excepción de referencia nula). He encontrado que también ocurre cuando se usa Linq para Entidades. Pensé que sería útil señalar que esta excepción no se limita a una NRE dentro de una expresión Lambda.