我使用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嵌套映射与可为空的内部对象?