- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
应用:
此问题与自动生成的 edmx 文件的 ProviderManifestToken
属性有关。
根据使用哪个版本的数据库(不同的开发人员有不同的数据库版本)从数据库更新模型,ProviderManifestToken
属性的值设置为 2008 或 2012在我们停止对 SQL Server 2005 的支持之前,我们确保此属性的值保持为 2005(有关详细信息,请参阅 this SO article)。
我想知道 2008 年和 2012 年之间是否存在类似的问题。这个属性的真正作用是什么?我将其保留为任一值是否安全,不会在运行时引起任何问题?或者我应该确保始终设置为 2008 或始终设置为 2012,以确保应用程序能够与我们支持的数据库版本正常工作?
MSDN对于描述此属性不是很有用。它指出 ProviderManifestToken
是
A string that identifies that version of the database server being used. For example, the SQL Server provider uses the string "2008" for SQL Server 2008. This cannot be null but may be empty.
谢谢!
最佳答案
自 EF 6.1.2 起,将 2012
作为 ProviderManifestToken
值将导致 EF 使用 offset ... fetch ...
生成 SQL语法(MS Sql 2008 中不支持)在很多情况下(例如分页)。因此,如果您将其更改为 2012
,那么在 MS Sql 2008 上运行的应用程序很可能会遇到问题。
将其设置为 2008
以便在较新的 Sql Server 上运行目前应该是安全的:已弃用的功能通常不会在 v+2 之前被删除(其中 v 是第一个已弃用的版本) 。抱歉,我无法再找到此声明的引用资料。
如果您需要让它与每个部署的目标数据库相匹配,this other SO answer可能对你有帮助。
如果您希望在任何情况下将其设置为 2008
,请确保将开发数据库全部设置为 100
(SQL Server 2008) 兼容性级别应该可以解决问题。不幸的是,EF 设计器似乎并不总是遵守其运行以更新模型的数据库的兼容性级别。因此,在使用它时,它可能会“升级”ProviderManifestToken
值,如果开发人员提交它并让其部署,则会造成麻烦。
我无法在自己的工作站上重现此内容。但我公司的一些开发人员遇到了麻烦,尽管他们声称他们的本地数据库处于 100
兼容级别。
他们似乎没有正确设置 SQL Server Management Studio (SSMS) 默认脚本选项。 (工具
=> 选项...
=> SQL Server 对象资源管理器
=> 脚本
=> 服务器版本的脚本
)。为了以防万一,我让他们更改了它,目前他们报告不再有不需要的 ProviderManifestToken
值升级。
这对我来说看起来很奇怪,因为 SSMS 选项不应该对 EF 设计器产生任何影响。恕我直言,仅应考虑运行设计器的数据库。正如已经说过的,即使通过调整该选项,我自己也无法重现这个问题。
关于.net - ProviderManifestToken 2008 或 2012,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27610982/
我正在尝试使用 ASP.Net MVC3、Entity Framework 和 MySQL 创建一个网络应用。 我已将以下代码添加到我的 Web.Config 文件中。 我还在“Co
应用: .NET 4.5 C# 使用 EF6 和数据库优先方法 支持 SQL Server 2008R2、2012 和 2014 此问题与自动生成的 edmx 文件的 ProviderManifest
这个问题在这里已经有了答案: Error-Attempt by method 'X.set_DbConnection(System.Data.Common.DbConnection)' to acc
我正在连接到 Windows Azure SQL,但收到错误提供程序未返回 ProviderManifestToken 字符串。这曾经有效,直到我不知道的一些事情发生了变化。当 VS2013 向导创建
我正在使用 ASP.NET 4 和 Visual Studio 2010 进行工作。该项目使用 Entity Framework 。 我正在使用 MS SQL Server 2008(错误地),而一位
我有一个使用 EF 代码优先的 asp.net MVC3 项目。对于我的单元测试,我一直使用 SQL Server CE 4.0 和 SQL Server 2008 Express。两者都与 EF 完
我正在学习使用 .NET MVC 3 和 C# 进行开发。我正在尝试使用“代码优先”方法创建应用程序,但是当我尝试从我的数据库中提取数据时,我收到一条错误消息“提供商未返回 ProviderManif
我有一个使用 Entity Framework 和 SQL Server 2008 数据库的 MVC 应用程序。我使用 EF 向导来生成我的数据模型。 我有一个标准的 SQL Server 表 Dat
我正在尝试复制 MSDN 上找到的示例。我正在使用 ASP.NET 和 EF 4.1(CTP?)。我已使用 NuGet 安装 EntityFramework 包。 我收到此错误:提供程序未返回 Pro
这是我第一次尝试在带有 MVC3 的 .NET 中完全使用 mysql,使用代码优先技术。我已经通过网络平台安装了 VS2010 (10.0.3) 和 MVC3、.NET 4。然后我安装了 MySQL
我在 VS 2017 中建立了一个新项目。我打算使用 EF CodeFirst 方法。到目前为止,我使用的是 Azure SQL 数据库,而在这个测试项目中,我想使用我的远程 MySQL 数据库。我已
我有一个使用 oracle 11g、EF 5 代码优先和 system.data.oracleclient 的 Web 应用程序。 所以现在,它已升级到 EF 6 和 Oracle Managed D
我正在尝试使用 Entity Framework 连接到我的 PostgreSQL 数据库。不幸的是,在我的 SSDL 文件中使用 EdmGen(或 EdmGen2)生成模型后,ProviderMan
我是一名优秀的程序员,十分优秀!