我有一个包含几个FK引用的基本表。因此,当我为更新操作检索一个实体时,该实体包含相关实体的ICollections。我的主viewModel包含与这些ICollections相对应的Lists。但是,由于其他一些模型表示的是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是造成这个问题的原因。
谢谢
发布于 2018-01-02 11:20:06
您可以始终在AutoMapper的映射配置中覆盖默认的映射系统,您应该可以查看文档的映射继承中的运行时多态性部分。
如果你想要的实体是一个直的物体,为什么不把Automapper从方程中拿出来,然后强迫EF用一个一对一的系统来映射它…i.e
modelBuilder.Entity<MainEntity>()
.HasOne(p => p.Entity1)
.WithOne(i => i.MainEntity)
.HasForeignKey<Entity1>(b => b.MainEntityForignKey);HAve查看EF文件,第1至1节以获取更多信息
https://stackoverflow.com/questions/48059694
复制相似问题