【发布时间】:2017-09-08 21:42:39
【问题描述】:
EntityFramework 使用的 ProviderManifest 是否向后兼容,尤其是对于 Oracle 和 SQL Server?
我正在创建一个 DbProviderInfo 类的实例以传递给 DbModel.Build()。构造函数的第二个参数是 ProviderManifestToken。
正如documentation 所说,ProviderManifestToken 是:
一个字符串,用于标识正在使用的数据库服务器的版本 用过的。例如,SQL Server 提供程序使用字符串“2008”作为 SQL Server 2008。这不能为空,但可以为空。
有一个相关的、未回答的问题here 询问 ProviderManifestInfo 的作用。通过阅读this page,我了解到它允许数据库提供程序确定返回哪个版本的 ProviderManifest,而无需使用数据库连接。 (最后一个链接也解释了 ProviderManifest 的作用。)
在实验中,我发现我可以毫无问题地使用 ProviderManifestToken 为“11.2”的 Oracle 12 数据库。但这一般应该是真的吗?例如,如果我将“2008”作为 ProviderManifestToken 传递,并且我使用的是 SQL Server 2012,我可以期望“事物”正常工作吗?
我一直无法找到关于这一点的任何文档,如果供应商之间的情况有所不同,我不会感到惊讶。
【问题讨论】:
标签: c# .net sql-server oracle entity-framework