[英]Equality comparison fails between C# datetime and SQL datetime
我试图在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中存储的日期时间? 获取我的身份证的最佳方法是什么?
如果您使用的是SQL Server,请改用DateTime2
。 它具有与.NET类型相同的精度。
如果您正在使用Linq,那么您插入的对象是否会在提交时获得分配给它的ID? 你不需要“回忆”它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.