2016-08-18 4 views
0

他のオブジェクトのリストを含む複雑なオブジェクトUserがあります。エラーのあるプロパティを自動的に無視しない

User 
    List<User> Subordinates {get; set;} 
    etc.... 

私たちは、コードを実行すると、データベースへの接続がクローズされていて、私たちが言う部下を取得していないので、プロパティの一部に誤りがあるために、それは非常に許容できるのです。

AutoMapperでは、Userクラスを別のClassにマップしようとするとエラーが発生します。

したがって、従属プロパティのエラーは次のとおりです。

'((System.Data.Entity.DynamicProxies.User_26F7582000F06E0D5B307573194E69014E40D1C586E95D4E4932757C1F4DE360)((System.Data.Entity.DynamicProxies.WorkflowTask_DEDE69BC0D3CAFD0CCDA62406BC48A7A7CCBD5E8B13369FF5E761B64348A767C)thisTask).User).Subordinates' threw an exception of type 'System.ObjectDisposedException' 

AutoMapperがスローしているエラーは次のとおりです。

{"Error mapping types.\r\n\r\nMapping types:\r\nWorkflowTask -> jsonTask\r\nDataRepository.WorkflowTask -> Tasks.Models.jsonTask\r\n\r\nType Map configuration:\r\nWorkflowTask -> jsonTask\r\nDataRepository.WorkflowTask -> Tasks.Models.jsonTask\r\n\r\nProperty:\r\nUser"} 

次に、InnerException;

{"Error mapping types.\r\n\r\nMapping types:\r\nUser -> jsonUser\r\nDataRepository.User -> Tasks.Models.jsonUser\r\n\r\nType Map configuration:\r\nUser -> jsonUser\r\nDataRepository.User -> Tasks.Models.jsonUser\r\n\r\nProperty:\r\nSubordinates"} 

エラーのあるプロパティを無視するには、AutoMapperが必要です。

答えて

2

根本的な原因は、データは通常using(var context = new MyDbContext())ブロック内で、あなたのエンティティにロード怠け者である、とコンテキストブロックの外にアンロードのプロパティをマップするAutoMapperしようと、コンテキストがすでに配置されているので読み込み、それゆえSystem.ObjectDisposedExceptionをトリガします。

NOTロードするのに失敗したプロパティは無視されますが、マップする前にすべてのプロパティが正しく読み込まれていることを確認してください。 this guidanceを読むことをお勧めします。コントローラ、エンティティ、およびdbcontextを正しいレイヤに配置する方法を示しています。

+0

ありがとうございました。私は同じ結論に至りました。私が持っている問題は、エンティティを読み込むために「必要」がなく、確かにすべてをそのビューに戻したくないということです。私はただ必要なものを返すだけです。この場合、従属者はビューに必要とされません。返される量を減らそうとしているだけです。リンクをありがとう、私はそれも読んでください。 – griegs

+0

@griegsビューでプロパティが必要ない場合は、対応するビューモデルからプロパティを削除する必要があります。 1つのビューに必要なビューで別のビューでは必要ない場合は、1つのビューモデルを共有するのではなく、異なるビューモデルを作成する必要があります。 –

+0

ええ、良い点!ありがとうダニー、それは私がやることです。私はこれと非常に暗い道を下っていただけで、その愚かさに光を照らすために誰かが必要でした。ありがとう。 +1 – griegs

関連する問題