首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将viewModel对象映射到ICollection实体

将viewModel对象映射到ICollection实体
EN

Stack Overflow用户
提问于 2018-01-02 10:57:10
回答 1查看 788关注 0票数 0

我有一个包含几个FK引用的基本表。因此,当我为更新操作检索一个实体时,该实体包含相关实体的ICollections。我的主viewModel包含与这些ICollections相对应的Lists。但是,由于其他一些模型表示的是1-1映射,所以我使用object而不是List。但在实体内部,它们继续被表示为ICollections

在试图在viewModel和实体之间映射时,这给我带来了一些问题。我正在使用Automapper进行映射。我有过

代码语言:javascript
运行
复制
mapper.Map(viewModel, entity); 

目前,我忽略了这个映射中存在问题的模型,并分别添加了它们。有办法在一个映射中处理所有的事情吗?是否有一种处理ICollections (理想情况下应该是单个对象)的方法?

编辑

代码语言:javascript
运行
复制
public class MainViewModel
{
        public EntityVM1 vm1 { get; set; }        
        public List<EntityVM2> vm2 { get; set; }        
        public List<EntityVM3> vm3 { get; set; }    
}  

public class MainEntity
{
  ... some scalar props...

public virtual ICollection<Entity1> e1 { get; set; }        
public virtual ICollection<Entity2> e2 { get; set; }        
public virtual ICollection<Entity3> e3 { get; set; }        

}

Entity1和EntityVM1是造成这个问题的原因。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-02 11:20:06

您可以始终在AutoMapper的映射配置中覆盖默认的映射系统,您应该可以查看文档的映射继承中的运行时多态性部分。

如果你想要的实体是一个直的物体,为什么不把Automapper从方程中拿出来,然后强迫EF用一个一对一的系统来映射它…i.e

代码语言:javascript
运行
复制
modelBuilder.Entity<MainEntity>()
        .HasOne(p => p.Entity1)
        .WithOne(i => i.MainEntity)
        .HasForeignKey<Entity1>(b => b.MainEntityForignKey);

HAve查看EF文件,第1至1节以获取更多信息

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48059694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档