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

时间:2012-02-02 05:56:52

标签: 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(真)); // poco Line   1993年:Handled = true; 1994年:}

     

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

     

堆栈追踪:

     

[ArgumentNullException:Value不能为null。参数名称:meth]
  System.Reflection.Emit.DynamicILGenerator.Emit(OpCode操作码,   MethodInfo meth)+9492330 PetaPoco.PocoData.GetFactory(String sql,   String connString,Boolean ForceDateTimesToUtc,Int32 firstColumn,   Int32 countColumns,IDataReader r)in   C:\开发\ MyProjectTest \代码\ API \型号\ PetaPoco.cs:1992年
  PetaPoco.d__7 1.MoveNext() in C:\Dev\MyProjectTest\Code\API\Models\PetaPoco.cs:765
System.Collections.Generic.List
1..ctor(IEnumerable 1 collection) +327 System.Linq.Enumerable.ToList(IEnumerable 1来源)+58
  PetaPoco.Database.Fetch(String sql,Object [] args)in   C:\开发\ MyProjectTest \代码\ API \型号\ PetaPoco.cs:601
  PecaTest.NewProject.API.Customer.LoadSortedByName()in   C:\开发\ MyProjectTest \代码\ API \ Customer.cs:68个
  PecaTest.NewProject.MvcUI.Models.CustomerListModel..ctor()in   C:\开发\ MyProjectTest \代码\ MvcUI \型号\ CustomerListModel.cs:14个
  PecaTest.NewProject.MvcUI.Controllers.CustomerController.GetIndexView()   在   C:\开发\ MyProjectTest \代码\ MvcUI \ \控制器CustomerController.cs:82个
  PecaTest.NewProject.MvcUI.Controllers.CustomerController.Index()in   C:\开发\ MyProjectTest \代码\ MvcUI \ \控制器CustomerController.cs:19个
  lambda_method(Closure,ControllerBase,Object [])+96
  System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase   controller,Object []参数)+51
  System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext   controllerContext,IDictionary 2 parameters) +409
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary
2   参数)+52
  System.Web.Mvc<> C_ DisplayClassd.b _a()   +127 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter)   filter,ActionExecutingContext preContext,Func 1 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&LT;&GT; C_ DisplayClassf.b _c()   +61 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext   controllerContext,IList 1 filters, ActionDescriptor actionDescriptor, IDictionary 2个参数)+305
  System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext   controllerContext,String actionName)+830
  System.Web.Mvc.Controller.ExecuteCore()+ 1366   System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext)   +111 System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext   requestContext)+39
  System.Web.Mvc。&lt;&gt; c_ DisplayClass8.b _4()+65
  System.Web.Mvc.Async。&lt;&gt; c_ DisplayClass1.b _0()+44
  System.Web.Mvc.Async。&lt;&gt; c__DisplayClass8 1.<BeginSynchronous>b__7(IAsyncResult _) +42 System.Web.Mvc.Async.WrappedAsyncResult 1.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 step,Boolean&amp; completedSynchronously)+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;
    }

`

4 个答案:

答案 0 :(得分:5)

使接受的答案更准确一些。当我在POCO中有一个与数据库表中列的名称匹配但我没有该属性的setter时,我遇到了这个问题。在我的情况下,这是我自己计算的属性,所以我并不真正需要表中的数据,我打算将它作为只读。添加一个空的setter为我解决了这个问题。

可能更好的选择是将Ignore属性添加到该属性。

我最终最终删除了表中的列。

答案 1 :(得分:4)

你的poco是否有一个无参数构造函数,即;没有争论?它需要一个。如果您使用参数创建了自己的构造函数,则不会有默认的无参数构造函数,这可能导致反射代码失败。也许就是这样。

答案 2 :(得分:1)

问题确实在于POCO,因为我错过了设置并获取ID

答案 3 :(得分:1)

我在dapper中遇到了这个问题,在我的poco对象中,删除了私有问题后,我将一个字段定义为priave geter

    public bool isObsolete { **private** get; set; }

更改为

    public bool isObsolete { get; set; }