配置 AutoMapper 以映射的最佳/最简单方法是什么 ICollection<DomainModel>
至 ICollection<ViewModel>
至 ICollection<object>
?
我有一个如下所示的 DomainModel:
public class DomainModel
{
ICollection<EFEntity> Data;
//other stuff
}
我想将此 DomainModel 映射到 MVC ViewModel:
public class ViewModelWithCollection
{
ICollection<object> Data;
//other stuff
}
我需要 ICollection<object>
因为我使用以下 View :
@model ViewModelWithCollection
<table>
@foreach(object x in Model.Data)
{
Html.Partial("PartialView", x)
}
</table>
对于每个具体的 ViewModel,都存在一个像这样的 PartialView:
@model ViewModel
<tr> <!-- Render specific View Data --> <tr>
当我使用
AutoMapper.Map<DomainModel, ViewModelWithCollection>(source, target);
AutoMapper 只是做了这样的事情:
object target = (object)EFEntity
这当然行不通。
最佳答案
经过几个小时的搜索,我发现我想要实现的东西叫做映射继承:https://github.com/AutoMapper/AutoMapper/wiki/Mapping-inheritance
所以我的问题的解决方案是
AutoMapper.Map<DomainModel, ViewModelWithCollection>();
AutoMapper.Map<EFEntity, object>()
.Include<EFEntity, ViewModel>();
AutoMapper.Map<EFEntity, ViewModel>();
关于c# - 使用 AutoMapper 从 ICollection<EFEntity> 映射到 ICollection<ViewModel> 到 ICollection<Object>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9590980/