我在ASP.NET 4.0 Web窗体中使用Entity Framework 4.0。
开发服务器上的一切都很好。但是当我到达生产服务器时,我的Elmah记录了这个错误
System.ArgumentException
正在使用的SQL Server版本不支持 数据类型'datetime2'。
我做了一个快速研究,发现datetime2
又名datetime2(7)
是问题,设置ProviderManifestToken="2005"
将解决问题。
我的问题是这个。我的开发服务器具有 SQL Server 2008 R2 ,而生产服务器具有 SQL Server 2008 Express 。因此,将清单更改为2005似乎并不正确。
我的问题是
ProviderManifestToken="2005"
会有效吗?datetime2
?答案 0 :(得分:23)
到目前为止,我没有看到任何解决方法。因此,如果您使用 SQL Server 2008 Express ,请右键单击您的edmx,使用XML(文本)编辑器打开它并设置ProviderManifestToken="2005"
。
听起来不太好。但就我现在所拥有的一切。
答案 1 :(得分:2)
我发现这篇博文的答案对我有用:The version of SQL Server in use does not support datatype 'datetime2'
事实证明,实体框架4以某种方式获得了使用SQL Server 2008的想法。修复是在XML编辑器中编辑.edmx文件并设置ProviderManifestToken =“2005”而不是2008.(您需要重建。)以下是SQL Server 2005的界限:
<Schema Namespace="OfficeBookDBModel.Store"
Alias="Self" Provider="System.Data.SqlClient"
ProviderManifestToken="2005"
xmlns:store=http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator
xmlns="http://schemas.microsoft.com/ado/2009/02/edm/ssdl">
答案 2 :(得分:0)
如果您没有其他人,请将DateTime.Now
作为日期......
有相同的错误,这解决了它,因为如果你没有为你的日期时间对象设置一个值,它将是1/1/0001 12:00:00 AM ...这给你错误然后...再次这就是我解决问题的方法