C#datetime和SQL datetime之间的平等比较失败

时间:2012-10-24 21:14:21

标签: c# sql-server-2008 datetime linq-to-entities equality

我正在尝试在C#datetime和SQL datetime之间进行相等比较,由于存储这些值的精度,它们似乎失败了。

所以说我有一个非常简单的SQL表,包含以下字段:

ID (PK, int, not null) - identity
Title (text, null)
UpdateTime (datetime, not null)

我通过Entity框架创建一个类对象,将其UpdateTime设置为DateTime.Now,如下所示:

DateTime now = DateTime.Now;
Title.UpdateTime = now;

当我将新对象插入表格时,我发现所有值都显示正确存储。现在我想要为我的对象创建的ID。

这是事情变得困难的地方。我尝试通过LINQ拉回ID:

Title.ID = context.DBTitles.Where(x=>x.UpdateTime == now).FirstOrDefault().ID;

这会引发异常,因为查询返回null,尽管我插入的'now'应该与插入到我的表中的'now'相同。

所以我的问题是:我如何确保我的C#datetime等同于SQL中存储的日期时间?获取我的身份证的最佳方式是什么?

2 个答案:

答案 0 :(得分:6)

如果您使用的是SQL Server,请改用DateTime2。它与.NET类型具有相同的精度。

答案 1 :(得分:3)

如果您正在使用Linq,那么您插入的对象在提交时是否会获得分配给它的ID?你不需要“回忆”它。