我有一个带有几个FK引用的基本表。所以当我检索实体进行更新操作时;该实体包含Lists
相关的entites。我的主视图模型包含ICollections
,它们对应于这些object
。但是,由于其他一些模型代表1-1映射,因此我List
代替ICollections
。但在实体内部,它们仍然被表示为mapper.Map(viewModel, entity);
。
在尝试在viewModel和Entity之间进行映射时,这给了我一些问题。我正在使用Automapper进行映射。我有
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; }
}
目前我正在从这个映射中省略有问题的模型并单独添加它们。有没有办法在一个映射中处理所有内容?有没有办法处理理想情况下应该是单个对象的ICollections?
修改
secure_asset()
Entity1和EntityVM1导致问题。
由于
答案 0 :(得分:0)
您始终可以覆盖AutoMapper
映射配置中的默认映射系统,您应该看一下文档的runtime polymorphism in the mapping inheritance部分。
如果你想要的实体是一个直的对象,为什么不把Automapper从等式中取出来,只是强迫EF用一对一的系统映射它......即
modelBuilder.Entity<MainEntity>()
.HasOne(p => p.Entity1)
.WithOne(i => i.MainEntity)
.HasForeignKey<Entity1>(b => b.MainEntityForignKey);
查看EF docs, under section one-to-one以获取更多信息