0

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

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

mapper.Map(viewModel, entity); 

目前我从这个映射中忽略了有问题的模型并单独添加它们。有没有办法在一个映射中处理所有内容?有没有办法处理理想情况下应该是单个对象的 ICollections?

编辑

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 导致了问题。

谢谢

4

1 回答 1

0

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

如果您在实体上想要的是一个直的对象,为什么不将 Automapper 排除在等式之外,而只是强制 EF 使用一对一系统对其进行映射......即

modelBuilder.Entity<MainEntity>()
        .HasOne(p => p.Entity1)
        .WithOne(i => i.MainEntity)
        .HasForeignKey<Entity1>(b => b.MainEntityForignKey);

查看EF 文档,在一对一部分了解更多信息

于 2018-01-02T11:20:06.063 回答