按生成的DateTime值顺序添加行返回

时间:2015-07-22 11:03:12

标签: c# entity-framework-6

我正在使用Entity Framework 6.1.2和Code First,并使用Repository将多行添加到数据库中。

每一行都在原子上下文中添加。我正在处理的类具有类型为DateTime的属性,在将其保存到数据库之前将其设置为DateTime.Now

稍后,此属性用于检查是否仅处理了最后一行。

这适用于我的本地计算机。使用单元测试时,有几个对象一次添加到上下文中,然后测试我的业务逻辑是否基于所描述的属性做出正确的假设。

但是,日期都是相同的,甚至不是毫秒差异。我不能在这里添加代码,因为我甚至无法在我的本地机器上重现它,但我认为它与将DateTime写入数据库时​​发生的舍入有关。

更新

通过将我的DateTime填充到SqlDateTime

来解决问题
new SqlDateTime(date).Value;

1 个答案:

答案 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轮到最接近的秒的情况)。