我使用AutoMapper項目如下結構AutoMapper項目嵌套的對象,其中內部對象爲空失敗
public class OuterSource
{
....
public Guid? InnerId { get; set }
public InnerSource Inner { get; set; }
}
public class InnerSource
{
public Guid Id { get; set; }
public DateTime Date { get; set; }
}
public class OuterDest
{
....
public InnerDest Inner { get; set; }
}
public class InnerDest
{
public Guid Id { get; set; }
public DateTime Date { get; set; }
}
var result = AutoMapper.Project<OuterSource, OuterDest>(query);
正如你可以看到,內部對象爲空。
如果Inner對象有一個值,則投影工作正常,但如果Inner對象爲null,EF將拋出一個Exception,就好像它不知道InnerDest實際上應該爲null。
"The cast to value type 'Guid' failed because the materialized value is null. Either the result type's generic parameter or the query must use a nullable type."
使用
var result = AutoMapper.Map<IEnumerable<OuterSource>, IEnumerable<OuterDest>>(query);
沒有解決我的問題,但很明顯,我更喜歡使用的項目。
有沒有什麼好的解決方法,或者我可以簡單地不使用.Project嵌套映射與可爲空的內部對象?