我正在尝试在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中存储的日期时间?获取我的身份证的最佳方式是什么?
答案 0 :(得分:6)
如果您使用的是SQL Server,请改用DateTime2
。它与.NET类型具有相同的精度。
答案 1 :(得分:3)
如果您正在使用Linq,那么您插入的对象在提交时是否会获得分配给它的ID?你不需要“回忆”它。