2012-02-02 13 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


Customerクラス

` 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

あなたPOCOは、パラメータなしのコンストラクタすなわちを持っています。引数はありませんか?それが必要です。パラメータを使用して独自のコンストラクタを作成した場合、リフレクションコードが失敗する可能性があるデフォルトのパラメータのないコンストラクタはありません。多分それはそれです。私は受け入れ答えは、もう少し正確にするためにID

+0

これは失敗しました。デバッガを実行してpcの値をチェックしてください。それは間違いなくあなたが期待しているポコですか?私はSchotimeに同意します –

3

を設定および取得するために逃したとして

関連する問題