これは間違いなく独特の問題であり、同じ問題を抱えている人を誰も見つけられなかったので、問題が何であるかを実際に知っている人を見つけられることを願っています.
私は言った:
public class ViewModel
{
public string TestString { get; set; }
public ChildObject Child { get; set; }
public List<Children> Children { get; set; }
}
さて、コントローラーでオブジェクトをマッピングすると...つまり
TestObject testObject = Repository.GetObject() // This is my Entity Framework object (with dynamic proxies attached to it)
Mapper.Map(ViewModel, testObject);
そして、私のマッピングは次のように定義されています。
Mapper.CreateMap<ViewModel, TestObjectType>();
Mapper.CreateMap<ViewModelChildView, TestObjectChildType>();
すべてが正常にマップされるので、ViewModel のセットアップとフォームが適切に作成されました。問題は?それが興味深い部分です。
ChildObject
私の元のオブジェクトと同様に、DynamicProxy (Entity Framework) です。ただし、 は通常のリストに設定されます(List<Children>
元のリストが の DynamicProxy であってもList<Children>
)。
これは、コンテキストに適切にバインドされていないため、Entity Framework がこのリストにアクセスできないことを意味します。私は一日中、運がない回避策を見つけようとしました。そこに何かアイデアはありますか?
編集
これらは私の実際のオブジェクトバインディングです:
Mapper.CreateMap<CompanyViewModel, Company>();
Mapper.CreateMap<CompanyCategoryViewModel, CompanyCategory>(); // I've ever tried removing this line.
Mapper.CreateMap<List<CompanyCategoryViewModel>, List<CompanyCategory>>();
コントローラ:
Mapper.Map(companyViewModel, company);
Company オブジェクト = Dynamic Proxy CompanyCategories list サブオブジェクト (Company の)、マップ、ただし Dynamic Proxy ではありません。