Sum*_*arg 5 .net sql-server entity-framework entity-framework-6
应用程序:
此问题ProviderManifestToken
与自动生成的edmx文件的属性有关.
根据使用的数据库版本(不同开发人员具有不同版本的数据库)从数据库更新模型,ProviderManifestToken
属性的值可以设置为2008或2012.在我们停止支持SQL Server 2005之前,我们确保该属性的值保持为2005(有关更多信息,请参阅此SO文章).
我想知道2008年和2012年之间是否存在类似问题.这个属性到底有什么作用?我可以安全地将其保留为任何值,而不会在运行时造成任何问题吗?或者我应该确保始终将其设置为2008或始终设置为2012以确保应用程序与我们支持的数据库版本一起正常工作?
MSDN在描述此属性时不是很有用.它指出ProviderManifestToken
是
一个字符串,用于标识正在使用的数据库服务器的版本.例如,SQL Server提供程序对SQL Server 2008使用字符串"2008".这不能为null,但可能为空.
谢谢!
从EF 6.1.2开始,具有2012
as ProviderManifestToken
值将导致EF offset ... fetch ...
在一些情况下使用语法(在MS Sql 2008中不支持)生成SQL ,例如分页.所以,如果你改变它2012
,你很可能会遇到运行在MS Sql 2008上的应用程序的麻烦.
将其设置2008
为在较新的Sql Server上运行应该是安全的:不推荐使用不推荐的功能直到v + 2(其中v是不推荐使用它们的第一个版本).对不起,我无法找到此声明的参考.
如果您需要使其与每个部署的目标数据库匹配,则此其他SO答案可能对您有所帮助.
如果您希望2008
在任何情况下进行设置,请确保将开发DB设置为100
(SQL Server 2008)兼容级别应该可以解决问题.不幸的是,看起来EF设计师并不总是尊重运行它来更新模型的数据库的兼容级别.因此,在使用它时,它可能会"升级"该ProviderManifestToken
值,如果开发者提交它并让它部署就会造成麻烦.
我无法在自己的工作站上复制它.但是我公司的一些开发人员遇到了麻烦,尽管他们声称他们的本地数据库处于100
兼容级别.
看来他们没有正确设置SQL Server Management Studio(SSMS)默认脚本选项.(Tools
=> Options...
=> SQL Server Object Explorer
=> Scripting
=> Script for server version
).为了以防万一,我让他们改变它,现在他们报告不再有不受欢迎的ProviderManifestToken
价值升级.
这看起来很奇怪,因为SSMS选项不会对EF设计师产生任何影响.只有运行设计者的数据库才应考虑到恕我直言.正如已经说过的那样,即使调整了这个选项,我也无法自己重现这个问题.
归档时间: |
|
查看次数: |
4427 次 |
最近记录: |