我有一个复杂的域模型,它与系统中的其他实体有许多关系。
为了编辑这个模型,我想设置一个简化事物的视图模型。我想将模型拆分为较小的逻辑块,每个部分都有编辑屏幕,而不是试图在一个屏幕上表示整个模型。
在我有一个关系的域模型中,它表示如下:
public partial class CbItemsContent
{
public CbItemsContent()
{
this.cbItemsContentRegulators = new HashSet<cbItemsContentRegulator>();
}
public int ItemContentId { get; set; }
public int ItemID { get; set; }
......
public virtual CbItem CbItem { get; set; }
public virtual ICollection<cbItemsContentRegulator> cbItemsContentRegulators { get; set; }
}
cbItemsContentRegulator是CbItemsContent(上面显示的模型)所拥有的另一组实体
我想用一个名为ItemContentRegulatorsViewModel的简化viewModel替换我的模型中的cbItemsContentRegulators集合,如下所示:
public class ItemContentRegulatorsViewModel
{
public int ItemContentId { get; set; }
public int[] RegulatorIds { get; set; }
}
减少与ItemContent父ID的关系,如果Regulator ID
则减少int数组是我想要做的事情吗?
如何将我的CbItemsContentRegulators集合映射到ID的int []
答案 0 :(得分:0)
假设您正在使用Entity Framework,则应将视图模型更改为
public class ItemContentRegulatorsViewModel
{
public int ItemContentId { get; set; }
public IList<int> RegulatorIds { get; set; } // IList
}
不,您可以定义映射:
var profile = Mapper.CreateProfile("SomeName");
profile.CreateMap<CbItemsContent,ItemContentRegulatorsViewModel>()
.ForMember(dest => dest.RegulatorIds,
m => m.MapFrom(src => src.cbItemsContentRegulators.Select(c => c.RegulatorId)));
现在您可以在以下查询中使用它:
context.CbItemsContents.ProjectTo<ItemContentRegulatorsViewModel>()
如果RegulatorIds
为数组,则会抛出ToArray
无法识别的异常。