我正在使用Entity Framework 6.1.2
和Code First,并使用Repository将多行添加到数据库中。
每一行都在原子上下文中添加。我正在处理的类具有类型为DateTime
的属性,在将其保存到数据库之前将其设置为DateTime.Now
。
稍后,此属性用于检查是否仅处理了最后一行。
这适用于我的本地计算机。使用单元测试时,有几个对象一次添加到上下文中,然后测试我的业务逻辑是否基于所描述的属性做出正确的假设。
但是,日期都是相同的,甚至不是毫秒差异。我不能在这里添加代码,因为我甚至无法在我的本地机器上重现它,但我认为它与将DateTime写入数据库时发生的舍入有关。
更新
通过将我的DateTime填充到SqlDateTime
来解决问题new SqlDateTime(date).Value;
答案 0 :(得分:0)
由于.Net DateTime和SqlDateTime之间的准确度不同,您可能会遇到此问题。您是否尝试在添加到EF之前将日期转换为SqlDateTime?
SqlDateTime的准确度为3.33毫秒(https://msdn.microsoft.com/en-us/library/system.data.sqltypes.sqldatetime(v=vs.110).aspx) 而DateTime的准确度为3毫秒(https://msdn.microsoft.com/en-us/library/ms187819.aspx)
你可以省略第二部分(单独省略ms部分就不会这样做,因为你可能有一个ms轮到最接近的秒的情况)。