【发布时间】:2013-10-31 09:48:54
【问题描述】:
我创建了以下地图:
Mapper.CreateMap<UsuarioViewModel, GEN_USUARIOS>();
在这张地图中,有一些属性是“int?” (可为空的外键),例如 IDSUPERVISOR。
为了应用映射,我使用以下句子:
Mapper.Map<UsuarioViewModel, GEN_USUARIOS>(usuarioVM, usuario);
- 如果源具有值 (5) 而目标没有值 (null),则将值应用于目标 (5)。
- 如果源具有值 (6) 而目标具有另一个值 (5),则该值将正确应用于目标 (6)。
- 但是,如果两者具有相同的值(不修改值),则destination中的属性映射为NULL,这是错误的!
这是一个错误还是我遗漏了什么?
编辑:我已经能够在一个简单的项目中隔离问题。我在 GitHub 中创建了一个存储库:https://github.com/farlop/TestAutomapper。它包括用于创建数据库模式和示例数据的代码和 SQL 脚本。要对其进行测试,只需编辑 IDSUPERVISOR 列中具有值的记录,然后保存而不更改任何数据。您可以看到值在不应该更新为 null 时是如何更新的
【问题讨论】:
-
您很可能遗漏了什么。也许EF正在介入并将其设置为NULL?这个要点很好用。 gist.github.com/idursun/7248645
-
你是对的。当然它必须与EF做一些事情。我尝试使用另一个未映射到实体的可为空属性,它工作正常。我已对我的测试项目做出承诺以反映这一点
-
尝试刷新问题。两个月后,我的一位同事也遇到了同样的问题,我们找不到问题出在哪里。有什么想法吗?
标签: asp.net-mvc entity-framework automapper automapper-3