正在使用的SQL Server版本不支持数据类型datetime2?

Bar*_*a88 26 sql sql-server linq-to-entities entity-framework entity-framework-4

An error occurred while executing the command definition. See the inner exception for details. bbbbInnerException:aaaa System.ArgumentException: The version of SQL Server in use does not support datatype 'datetime2'.

   at System.Data.SqlClient.TdsParser.TdsExecuteRPC(_SqlRPC[] rpcArray, Int32 timeout, Boolean inSchema, SqlNotificationRequest notificationRequest, TdsParserStateObject stateObj, Boolean isCommandProc)

   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)

   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)

   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)

   at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)

   at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)

   at System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior)

   at System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavioR
Run Code Online (Sandbox Code Playgroud)

我有一个使用Entity Framework的网站.几个月前,我添加了一个新表,并在现有表中添加了一些列; 一切正常.

今天我更新了EDMX的映射,以便可以使用新表和新列,并将WebMethods添加到我的services.asmx文件中.从那时起,我无法运行我的网站,因为我有一个我无法理解的错误.如果你理解的话请解释一下,告诉我我的错误在哪里.

我没有在任何地方使用datetime2.我的新表中没有这样的数据类型,也没有添加到现有表的列中.

我的PC上的SQL版本是SQL2008 R2,在我有SQL2008的服务器上.我没有将服务器升级到R2的选项.

Mit*_*dir 80

您是否尝试使用XML编辑器打开EDMX文件并检查其值ProviderManifestToken.它可以帮助从改变ProviderManifestToken=”2008”ProviderManifestToken=”2005”.

  • 为我工作完美.虽然上面的答案给出了原因,但这个给出了快速修复. (4认同)
  • 这很有效 - 很快,我爱你. (3认同)

Lad*_*nka 18

除了@Mithrandir之外,还要验证您的数据库是否在兼容级别设置为100的情况下运行(SQL 2008).

您不必DATETIME2在数据库中使用它来获取此错误.一旦将required(NOT NULL)DATETIME列添加到现有表并且在将实体保存到数据库之前未设置该值,通常会发生此错误.在这种情况下,.NET将发送默认值1.1.0001,该值不适合DATETIME范围.这(或类似的东西)将成为您问题的根源.


Mah*_*ssa 12

在文件编辑器中打开EDMX(或在Visual Studio中"以...打开"并选择XML编辑器).在顶部,您将找到存储模型,它具有属性ProviderManifestToken.这应该具有值2008.将其更改为2005,重新编译,一切正常.

注意:每次从数据库更新模型时都必须执行此操作.