我一直在使用AutoMapper(3.1.1以前和现在3.2.1测试这种情况)来处理从EF模型到断开连接的业务服务模型的映射。随着我们的使用范围的扩大,我们开始尝试映射具有嵌套可为空的复杂类型的EF模型时,我已经开始看到这种类型的错误:
无法创建类型的null常量值 'BusinessService.Models.TireOptions'。只有实体类型,枚举 在此上下文中支持类型或基元类型。
在这个简化的例子中,假设我们有一个类型为ConstructionOrder,其成员类型为TireOptions。在EF正在建模的关系数据库中,表BuildOrder被定义为具有可空的FK到TireOption表和基于FK的适当的NavigationProperty。
每次我们尝试通过Project()映射时都会出现此错误.To(),无论返回的EF ConstructionOrder模型中是否存在TireOptions的值。在从3.1.1升级到3.2.1之前,我看到了一个不同的错误,但只有在没有子TireOptions对象的数据时。
3.1.1中发生的错误是:
转换为值类型'Int32'失败,因为具体化值 一片空白。结果类型的泛型参数或查询必须 使用可空类型。
这似乎是处理嵌套的可空复杂类型的简单情况,但this comment from the Entity Framework Triage Team让我觉得由AutoMapper生成的表达式树无法由EF处理。这是真的吗,还是有办法处理这样的情况?