异常详细信息:System.ArgumentNullException:值不能为null。参数名称:运行时的方法

lea*_*ing 5 petapoco

我有一个项目,其中有我的API类,并且在该项目中,我生成了Database.cs。在我的MVC项目中,我已经修改了API。Uppon运行该应用程序时,我收到以下错误消息,由于我无法理解为什么收到此错误消息,因此任何人都可以提供帮助。

http://www.garethelms.org/2011/05/help-getting-started-with-petapoco/#comment-69,我发现自安装petaPOCo以来,所有的GetSetMethod()都是GetSetMethod(true)。 。

值不能为空。参数名称:meth描述:当前Web请求执行期间发生未处理的异常。请查看堆栈跟踪,以获取有关错误及其在代码中起源的更多信息。

异常详细信息:System.ArgumentNullException:值不能为null。参数名称:meth

源错误:

第1990行:}第1991行:第1992行:il.Emit(OpCodes.Callvirt,pc.PropertyInfo.GetSetMethod(true)); // poco Line 1993:Handled = true;1994行:}

源文件:C:\ Dev \ MyProjectTest \ Code \ API \ Models \ PetaPoco.cs行:1992

堆栈跟踪:

[ArgumentNullException: Value cannot be null. Parameter name: meth]
System.Reflection.Emit.DynamicILGenerator.Emit(OpCode opcode, MethodInfo meth) +9492330 PetaPoco.PocoData.GetFactory(String sql, String connString, Boolean ForceDateTimesToUtc, Int32 firstColumn, Int32 countColumns, IDataReader r) in C:\Dev\MyProjectTest\Code\API\Models\PetaPoco.cs:1992
PetaPoco.d__71.MoveNext() in C:\Dev\MyProjectTest\Code\API\Models\PetaPoco.cs:765
System.Collections.Generic.List
1..ctor(IEnumerable1 collection) +327 System.Linq.Enumerable.ToList(IEnumerable1 source) +58
PetaPoco.Database.Fetch(String sql, Object[] args) in C:\Dev\MyProjectTest\Code\API\Models\PetaPoco.cs:601
PecaTest.NewProject.API.Customer.LoadSortedByName() in C:\Dev\MyProjectTest\Code\API\Customer.cs:68
PecaTest.NewProject.MvcUI.Models.CustomerListModel..ctor() in C:\Dev\MyProjectTest\Code\MvcUI\Models\CustomerListModel.cs:14
PecaTest.NewProject.MvcUI.Controllers.CustomerController.GetIndexView() in C:\Dev\MyProjectTest\Code\MvcUI\Controllers\CustomerController.cs:82
PecaTest.NewProject.MvcUI.Controllers.CustomerController.Index() in C:\Dev\MyProjectTest\Code\MvcUI\Controllers\CustomerController.cs:19
lambda_method(Closure , ControllerBase , Object[] ) +96
System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) +51
System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary2 parameters) +409
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary
2 parameters) +52
System.Web.Mvc.<>c_DisplayClassd.b_a() +127 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func1 continuation) +436
System.Web.Mvc.<>c__DisplayClassf.<InvokeActionMethodWithFilters>b__c() +61 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func
1 continuation) +436
System.Web.Mvc.<>c_DisplayClassf.b_c() +61 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList1 filters, ActionDescriptor actionDescriptor, IDictionary2 parameters) +305
System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +830
System.Web.Mvc.Controller.ExecuteCore() +136
System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +111 System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) +39
System.Web.Mvc.<>c_DisplayClass8.b_4() +65
System.Web.Mvc.Async.<>c_DisplayClass1.b_0() +44
System.Web.Mvc.Async.<>c__DisplayClass81.<BeginSynchronous>b__7(IAsyncResult _) +42 System.Web.Mvc.Async.WrappedAsyncResult1.End()+140 System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult,对象标记)+54
System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult,对象标记)+40
System.Web .Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult)+52 System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult结果)+38
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +8969117 System.Web.HttpApplication.ExecuteStep(IExecutionStep步骤,布尔值和已完成同步)+184

-------------------------------------------------- ------------------------------版本信息:Microsoft .NET Framework版本:4.0.30319; ASP.NET版本:4.0.30319.272


客户等级

` private int id = 0;
    public  int ID
    {
        get { return id; }
        set { id = ID; }
    }

    protected string name;
    public Customer() { }

    public Customer(string name)
    {
        this.name = name;
    }

    public string Name
    {
        get { return name; }
        set { name = value; }
    }

    public override string ToString()
    {
        return name;
    }
Run Code Online (Sandbox Code Playgroud)

`

Ste*_*ner 6

使接受的答案更加精确。当我在POCO中有一个属性与数据库表中的列名匹配但我没有该属性的设置器时,便遇到了这个问题。就我而言,这是我自己计算的属性,因此我实际上并不需要表中的数据,因此我希望它是只读的。添加一个空的二传手解决了我的问题。

可能更好的选择是将“忽略”属性添加到该属性。

我最终最终从表中删除了该列。


lea*_*ing 2

问题确实出在 POCO 上,因为我错过了设置和获取 ID