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

本文关键字:DateTime 返回 顺序 添加行 | 更新日期: 2023-09-27 18:03:54

我使用Entity Framework 6.1.2与代码优先,并使用存储库向数据库添加多行。

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

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

这在我的本地机器上有效。在使用单元测试时,会立即向上下文添加几个对象,然后测试业务逻辑是否根据所描述的属性做出了正确的假设。

然而,所有的日期都是一样的,甚至没有一毫秒的差别。我真的不能在这里添加代码,因为我甚至不能在我的本地机器上重现它,但我假设它与将DateTime写入数据库时发生的舍入有关。

通过将我的DateTime填充到SqlDateTime

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

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

由于。net DateTime和SqlDateTime之间的精度不同,您可能会遇到此问题。在添加到EF之前,您是否尝试将日期转换为SqlDateTime ?

SqlDateTime的精度为3.33 ms (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四舍五入到最接近秒的情况)。