在这个项目中,我正在跟踪创建、编辑和最终处理某些内容的时间。我为此设置了三个 DateTime 字段。下面的代码是我创建记录时的代码。
newsArchive.CreateDateTime = DateTime.Now;
newsArchive.ModifyDateTime = DateTime.MinValue;
newsArchive.SendDateTime = DateTime.MinValue;
naRepository.Add(newsArchive);
naRepository.Save();
我收到“SqlDateTime 溢出。必须在 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间。”当我尝试添加它时。我知道我不能发送 NULL。你会如何处理?
我正在使用 Linq2SQL 来处理这个。
最佳答案
为什么不能发送空值? AFAIK,Linq2SQL 支持可为空的值类型;您只需要 DB 中的列可以为空,否则 L2S 不会将 DAO 投影为可以为空的类型。
您可以使用 (DateTime)(SqlDateTime.MinValue) 代替 DateTime.MinValue。这将使用最小的 SQL 兼容日期时间值,显式转换为 DateTime。
虽然 SqlDateTime 和 DateTime 实际上都将时间存储为 UInt64“Ticks”值,但这两种类型之间的区别在于 SQL Server 使用不同的纪元(值为零)和不同的分辨率(1“tick”在几分之一秒)比 CLR 的 DateTime。
关于c# - SqlDateTime 溢出,但我想要 NULL 或 MinValue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4673509/