我们使用AutoMapper将业务实体映射到数据实体,反之亦然。有两个类,我们希望在其上对数据库进行更新。
ImportConfiguration
[DataContract]
public class ImportConfiguration : FileType
{
[DataMember]
public Guid ImportConfigurationID { get; set; }
[DataMember]
public string FileMask { get; set; }
[DataMember]
public virtual List<OrderConfiguration> OrderConfigurations { get; set; }
}
OrderConfiguration
[DataContract]
public class OrderConfiguration
{
[DataMember]
public Guid OrderConfigurationID { get; set; }
[DataMember]
public Guid ImportConfigurationID { get; set; }
[DataMember]
public string OrderConfigData{ get; set; }
}
以下是从Business实体到ImportConfiguration的数据实体的映射。
Mapper.CreateMap<ImportConfiguration, Data.Entities.ImportConfigurations>()
.ForMember(d => d.OrderConfigurations, o => o.UseDestinationValue());
但是当我们通过
创建映射时var newDbconfig = Mapper.Map<ImportConfiguration, Data.Entities.ImportConfigurations>(newBoConfig);
引发以下错误消息:
错误消息:
EntityCollection已初始化。只应调用InitializeRelatedCollection方法在反序列化对象图时初始化新的EntityCollection。
答案 0 :(得分:0)
核心问题来自于您不应该设置EntityCollection
,这是映射中发生的事情。该集合由其持有者管理,您只应向其添加对象。
由于您希望基本上忽略目标值(保留目标值),因此只需对Ignore()
ImportConfigurations
方法
如果您需要对AfterMap
EntityCollection
方法添加自定义行为