我知道有很多关于这个问题的帖子,但它们似乎都没有解决我的问题。
以下是该方案:
我的MS SQL Server数据库用户表中的 CreateDate DateTime 列是不可为空的,并使用“默认值或绑定”设置中的GetDate()方法。
我可以使用标准EF插件创建一个用户,但是当我尝试更新用户时,我收到此错误:
datetime2数据的转换 输入到日期时间数据类型 在超出范围的价值。
没有EF担心更新的CreateDate列有什么诀窍?我有StoreGenerationPattern = Identity但是没有帮助。
以下是我的实体属性的EF属性: http://screencast.com/t/8ndQRn9N
这是我的Update方法: http://screencast.com/t/UXIzhkhR
答案 0 :(得分:4)
您是否尝试将StoreGeneratedPattern属性设置为“已计算”。如果不这样做,作为最后的手段,请尝试将列的数据类型更改为datetime2
。
[问题出现是因为.NET DateTime.MinValue
等于0001-1-1但是Sql Server DateTime
涵盖了1753-1-1到9999-12-31]
答案 1 :(得分:2)
我知道这是一个老问题,但也许这可能有助于某人:
问题可能是导致.edmx文件的概念部分(CSDL)中的StoreGeneratedPattern
与存储部分(SSDL)中的StoreGeneratedPattern
不同步的错误。永远不会调用GetDate()
默认值,因为 - 除非您从客户端代码中指定日期 - 否则会使用默认值DateTime.MinValue
。
好消息是,它是固定的。寻找KB2561001:http://archive.msdn.microsoft.com/KB2561001。我不知道在随后的EF 4.3版本中是否修复了此问题,或者您仍然需要应用此修补程序。