这个问题现在很重要,比什么都重要。日期将是我的尽头。
使用EF 6。
我在同一http请求中存储一个日期,将对象从数据库中拉回。
当我查看EF发送的SQL时,返回的相关日期的毫秒数与存储在db中的毫秒数相同(预期的行为)。
但是,当EF将其反序列化到内存中的对象图中时,毫秒是不同的。
因此,我保存了'2018-10-16 21:46:22.293'
SQL检索'2018-10-16 21:46:22.293'
EF反序列化至2018-10-16 21:46:22.294!
我创建了一个变通方法,方法是使用原始ADO.NET查询命中数据库以获取确切的日期('2018-10-16 21:46:22.293')。
即使很奇怪,如果我使用一个新鲜的DbContext并用它来抓取整个对象,那么日期也很好,即'2018-10-16 21:46:22.293'
因此,只有当我使用相同的DbContext保存数据来检索数据时,日期才会进行四舍五入(或其他方式)。
有人看到过这种奇怪的行为吗?是否有比原始SQL(ado.net)或新的DbContext更好的修复程序?
欢呼
答案 0 :(得分:1)
您可以通过将.AsNoTracking()
附加到检索查询来绕过EF缓存。