0

在几个不同的项目中,我一直面临着 automapper 的间歇性问题。

%99.9 的时间,可空布尔值上的映射工作正常。然而,间歇性地,在某些时候它肯定会开始错误地映射 false 和 null 值,甚至在更罕见的情况下,我看到它映射 false 到 true。

很长一段时间我都认为它可能在我的脑海中,但今天它在向我的同事展示了一项新功能时得到了验证。始终如一地,它将 null 映射为 false,并将 false 映射为 null。据我所知,一旦开始,每个可为空的布尔值都会发生这种情况。

奇怪的是,一旦我重建项目,它就会停止这样做。

在一个项目中,我们认为通过编写一个小函数来解决问题,该函数只接收源值并将明显的值返回,但这是从可为空的布尔值映射到不可为空的布尔值。但是今天,它从一个可以为空的布尔值变成了一个可以为空的布尔值。

而且我不知道如何调试它。我无法让它以任何程度的可预测性重现,并且甚至编写了一个运行 3000 次的硒测试以试图将其绊倒,但无济于事。

我有一个来自今天早些时候的请求的 trace.axd,如果这可能会有所帮助。

谁能给我建议?我们使用 C#、Visual Studio、IIS、AutoMapper 以及 .Net MVC 和实体框架。

在这一点上,我很慌张,我不知道我还能提供什么其他信息。我自己是初级开发人员的高端,但今天我团队的一位高级开发人员验证了这一点。很高兴知道我没有看到任何东西。

4

1 回答 1

0

我在 AutoMapper 5.2.1(当前最新版本)中遇到了类似的问题。我的数据库正在正确返回数据(我正在记录它的属性),但天知道为什么 automapper 最终开始将我的业务实体类(我正在使用 NHibernate)映射到具有所有属性到 .net 的默认值的模型:字符串正在转换为空,整数为 0 等等......奇怪的是,如果我重新启动 IIS 应用程序池自动映射器就可以正常工作了。

这绝对是一个自动映射器错误。

于 2014-10-02T14:10:18.287 回答