2012-02-02 2 views
4

나는 내 API 클래스가있는 프로젝트를 가지고 있는데 그 프로젝트에서 Database.cs를 생성했습니다. MVC 프로젝트에서 API를 다시 구현했습니다. 응용 프로그램을 실행하는 Uppon 다음과 같이 오류 메시지가 표시됩니다. 왜이 오류 메시지가 발생하는지 이해할 수 없으므로 아무도 도와 줄 수 없습니다.예외 정보 : System.ArgumentNullException : null 값일 수 없습니다. 매개 변수 이름 : 실행할 때의 meth

http://www.garethelms.org/2011/05/help-getting-started-with-petapoco/#comment-69에서, 나는 GetSetMethod()가 모두 PetaPOCo가 설치된 이후로 GetSetMethod (true)라는 것을 알 수 있습니다.

Value cannot be null. Parameter name: meth Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.ArgumentNullException: Value cannot be null. Parameter name: meth

Source Error:

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

Source File: C:\Dev\MyProjectTest\Code\API\Models\PetaPoco.cs Line: 1992

Stack Trace:

[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__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 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, IDictionary 2 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, 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.<>c_DisplayClassf.b_c() +61 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList 1 filters, ActionDescriptor actionDescriptor, IDictionary 2 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__DisplayClass8 1.<BeginSynchronous>b__7(IAsyncResult _) +42 System.Web.Mvc.Async.WrappedAsyncResult 1.End() +140 System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +54
System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +40
System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +52 System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +38
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +8969117 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +184

-------------------------------------------------------------------------------- Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version: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; 
    } 

`

+1

자세한 정보를 제공해주십시오. 포코가 사용 했나요? 용법? 건배 – Schotime

답변

1

문제는 POCO와 참이었다. 데이터베이스 테이블의 열 이름과 일치하는 POCO의 속성이있을 때이 문제가 발생했지만이 속성에 대한 설정자가 없었습니다. 필자의 경우에는 테이블에서 데이터를 실제로 필요로하지 않으므로 독점적으로 처리하려고했던 것은 내가 직접 계산하는 속성이었습니다. 빈 세터를 추가하면 문제가 해결되었습니다.

더 나은 옵션은 해당 속성에 Ignore 특성을 추가하는 것입니다.

궁극적으로 테이블에서 열이 제거되었습니다.

4

당신의 마시고는 매개 변수가없는 생성자 즉이 있습니까; 아무런 논쟁이 없습니까? 그것은 하나 필요합니다. 매개 변수를 사용하여 자체 생성자를 만든 경우 기본 매개 변수가없는 생성자가 없으므로 리플렉션 코드가 실패 할 수 있습니다. 아마 그럴거야. 내가 설정하고 좀 더 정확한 허용 대답을 할 수있는 ID

+0

오류가 발생했습니다. 디버거를 실행하고 pc 값을 확인하십시오. 확실히 당신이 기대하는 포코인가요? 나는 우리가 계속할 충분한 정보가 없다는 Schotime에 동의한다. –

3

를 얻을 수 놓친로