我正在使用Automapper
從DTO更新一系列實體。但是,如果某些條件適用,我不想從DTO更新一些屬性。例如,該實體過去有一個日期。如果條件在目標上爲真,則有條件地忽略來自源的字段
0
A
回答
3
使用PreCondition選項。這裏有一個簡單的例子:
public class Source
{
public string Name { get; set; }
public int Age { get; set; }
}
public class Dest
{
public string Name { get; set; }
public int Age { get; set; }
public DateTime LastUpdated { get; set; }
}
如果LastUpdated
當前年份是2015年的Name
映射纔會發生:
Mapper.CreateMap<Source, Dest>()
.ForMember(d => d.Name, o => o.PreCondition((rc) => ((Dest) rc.DestinationValue).LastUpdated.Year == 2015))
.ForMember(d => d.LastUpdated, o => o.Ignore());
Mapper.AssertConfigurationIsValid();
在下面的代碼中,「目標」對象將保留名稱「拉里「:
var src = new Source {Name = "Bob", Age = 22};
var dest = new Dest {Name = "Larry", LastUpdated = new DateTime(2014, 10, 11)};
Mapper.Map<Source, Dest>(src, dest);
如果你改變了一年LastUpdated
到2015年,Name
屬性,都會更新爲‘鮑勃’ 。
+0
'Condition'和'PreCondition'之間的區別 – blockhead
+2
@blockhead,'Condition'只傳遞被映射到'DestinationValue'屬性中的當前目標屬性的值。 'PreCondition'爲你提供'DestinationValue'的整個目標對象。 – PatrickSteele
相關問題
- 1. Rails 3嵌套驗證:如果所有字段都爲空,則忽略條目?
- 2. 否則條件被忽略?
- 3. 如果爲空,則忽略WHERE子句中的條件
- 4. 如果值爲空,則忽略條件MYSQL/Codeigniter
- 5. 有條件地忽略「> 0」嗎?
- 6. ScalaTest:有條件地忽略WordSpec測試
- 7. SQL:LEFT JOIN>如果ON條件失敗,則忽略WHERE語句中的條件?
- 8. 忽略空條件,如果空
- 9. 如果條件Python被忽略?
- 10. java如果語句條件被忽略
- 11. prolog查詢忽略如果條件
- 12. Makefile:如果不存在,則忽略先決條件
- 13. Automapper:忽略條件
- 14. skip_before_filter忽略條件
- 15. js忽略條件
- 16. 如何在MySQL查詢中使用OR並忽略第二個條件(如果第一個條件爲真)?
- 17. 有條件的Mercurial忽略文件
- 18. 如果條件爲真,則傳遞關鍵字參數
- 19. 如何忽略datagridview上的空條目
- 20. 驗證字段,當條件爲真
- 21. 如果前提條件忽略IIS UrlRewriter出站規則設置
- 22. ExpressionEngine:有條件地在頻道條目中顯示自定義字段
- 23. Git中的條件忽略
- 24. PostgreSQL:如果存在條件選擇所有行,否則忽略條件並選擇最早的行
- 25. 獲取文字展現出來,如果條件爲真
- 26. 忽略空條件的SQL where條款
- 27. IQueryable上的SelectMany忽略條件?
- 28. 如果目標未找到,則忽略
- 29. 條件SUMIF如果字段爲空
- 30. Webbrowser控件忽略FEATURE_BROWSER_EMULATION註冊條目
因此,您正在專門研究提供現有目標對象的情況 - 而不是Automapper爲您創建目標的位置? – PatrickSteele
這是正確的。 – blockhead