[英]Automapper -> DTO to Entity - How to trigger Setter validations when mapping
[英]How to fix when mapping DTO to Entity AutoMapper creates circular dependency
我有一個數據庫層次結構,如:在工作表和設備之間是一對一的關系。 當我嘗試將WorksheetDto映射到Worksheet時,AutoMapper通過Worksheet和Device進行循環依賴。
解決方案后,我進行了大量搜索,發現必須忽略設備的工作表參考。 (我的意思是Device.Worksheet)
實體和DTO:
public class Worksheet : EntityBase
{
public virtual Device Device { get; set; }
}
public class WorksheetDto : EntityBaseDto
{
public virtual DeviceDto Device { get; set; }
}
public class Device : EntityBase
{
public virtual Worksheet Worksheet { get; set; }
}
public class DeviceDto : EntityBaseDto
{
public virtual WorksheetDto Worksheet { get; set; }
}
AutoMapper配置:
var config = new MapperConfiguration(cfg =>
{
cfg.CreateMap<Device, DeviceDto>();
.ForMember(w => w.Worksheet, map => map.Ignore())
.PreserveReferences()
.ReverseMap();
});
當我像這樣使用它時,什么也沒有發生並出現以下錯誤:
System.InvalidOperationException: 'Multiplicity constraint violated. The role 'Worksheet_Device_Target' of the relationship 'RMDApp.DataLayer.Worksheet_Device' has multiplicity 1 or 0..1.'
因此,總結是,在調試時,我畢竟可以看到循環依賴關系。 因此EF由於提供的錯誤而無法上載工作表。
工作表和設備具有一對一的映射關系,但是選擇要在獲取工作表時是否要加載設備,反之亦然。
將虛擬機僅保留在一個位置,它將不會嘗試加載,也不會創建循環依賴項
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.