2010-11-26 13 views
4

これは本当に基本的な質問であり、重複している可能性があります。誰でも、どのような有用なエラー情報が.Netの任意のプログラムによって生成されたかを教えてくれますか?.NETプログラムで生成されたスタックトレースまたはエラー情報を読み取って例外の根本原因を見つける方法

今日、「あいまい一致が見つかりました」というエラーが発生しました。エンティティをデータベースに保存しています(EF4を使用) このエラーがなぜ発生するのか、根本的な原因は何かわかりません。添付のスナップは同じです。

alt text はここで、完全なエラーの詳細です

System.Reflection.AmbiguousMatchException was unhandled by user code 
    Message=Ambiguous match found. 
    Source=mscorlib 
    StackTrace: 
    at System.RuntimeType.GetPropertyImpl(String name, BindingFlags bindingAttr, Binder binder, Type returnType, Type[] types, ParameterModifier[] modifiers) 
    at System.Type.GetProperty(String name) 
    at IAA.Data.EntityFramework.RepositoryWithTypedId`2.SaveOrUpdate[T](T entity) 
    at ABC.XYZ.ApplicationServices.AcknowledgementManagementService.SaveOrUpdate(AcknowledgementFormViewModel acknowledgementFormViewModel) in E:\RA\ABC.XYZ\app\ABC.XYZ.ApplicationServices\AcknowledgementManagementService.cs:line 123 
    at ABC.XYZ.Web.Controllers.AcknowledgementsController.Acknowledgements(AcknowledgementFormViewModel acknowledgementFormViewModel) in E:\RA\ABC.XYZ\app\ABC.XYZ.Web.Controllers\AcknowledgementsController.cs:line 68 
    at lambda_method(Closure , ControllerBase , Object[]) 
    at System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) 
    at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) 
    at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) 
    at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClassd.<InvokeActionMethodWithFilters>b__a() 
    at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) 

のInnerException:

+0

可能性のある複製http://stackoverflow.com/questions/2877000/entity-framework-4-poco-entities-in-separate-assembly-dynamic-data-website –

+0

yeh、私はそのリンクに従いますが、それでも私の質問は違う。私はこのエラー情報を読んで原因を見つける方法を知りたいのですが。 AmbiguousMatchExceptionには多くのプロパティが含まれていますが、どちらが有用かは、ルートをトレースするのと同じです。 – paragy

答えて

2

Hmya、そのような幸運。実際にType.GetProperty()メソッドがと言っていて、の名前があいまいだった場合は、とてもうれしいでしょう。しかし、それはあなたが簡単に見つけることができません。コードが.NETフレームワークに存在し、最適化されているため、デバッガはという名前の値の引数を取得できません。あなたのエンティティモデルには、同じ名前の2つのプロパティがあるということだけです。とにかくそのようなもの。

+0

情報をくれてありがとう、私は手動で原因を調べて解決する必要があると思います。 – paragy

3

これは、System.Reflection.AmbiguousMatchExceptionがスローされ、処理されなかったことを意味します。それは、あなたがに移動させることができ、.NET Frameworkをデバッグ、IAA.Data.EntityFramework.RepositoryWithTypedId 2.SaveOrUpdate [T](Tエンティティ) `から呼び出されたSystem.Type.GetProperty(String name)から呼び出されたSystem.RuntimeType.GetPropertyImpl(String name, BindingFlags bindingAttr, Binder binder, Type returnType, Type[] types, ParameterModifier[] modifiers)、で

など

+0

は名前を必要とするか回避するか?エンティティの各プロパティを100以上のプロパティでチェックすることは本当に困難です。また、将来このようなタイプのエラーが発生した場合、私は数分で修正することができます。 – paragy

+0

@alliswell:その情報は提供されていません。ごめんなさい。 –

+0

ありがとうJohn、いくつかのプロパティを削除しました(基底クラスと派生クラスで重複しています)。そして今はうまくいきます。 – paragy

1

を投げました。例外が発生した場所にスタックを呼び出します。ここでは、ローカル変数を参照できます。

Visual Studio 2010では、[デバッガ]セクションの[オプション]を設定するだけで簡単です。 Visual Studio 2008には、hereという指示があります。

+0

+1いいリンクです。私は試してみましょう。 – paragy

関連する問題