将 viewModel 对象映射到 ICollection 实体
Mapping viewModel object to ICollection entity
我有一个基本的 table 和一些 FK 参考。因此,当我为更新操作检索实体时;该实体包含 ICollections
个相关实体。我的主 viewModel 包含 Lists
,对应于这些 ICollections
。但是,由于其他一些模型表示 1-1 映射,因此我使用 object
而不是 List
。但在实体内部,它们继续表示为 ICollections
。
尝试在 viewModel 和 Entity 之间进行映射时,这给我带来了一些问题。我正在使用 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 导致了问题。
谢谢
您始终可以在 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 了解更多信息
我有一个基本的 table 和一些 FK 参考。因此,当我为更新操作检索实体时;该实体包含 ICollections
个相关实体。我的主 viewModel 包含 Lists
,对应于这些 ICollections
。但是,由于其他一些模型表示 1-1 映射,因此我使用 object
而不是 List
。但在实体内部,它们继续表示为 ICollections
。
尝试在 viewModel 和 Entity 之间进行映射时,这给我带来了一些问题。我正在使用 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 导致了问题。
谢谢
您始终可以在 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 了解更多信息