目前,我正在将数据库名称传递给DbContext
的构造函数。在我的connectionStrings
文件的App.Config
部分中,我添加了一个连接字符串并指定了提供程序名称:
<connectionStrings>
<add name="myConnectionString" connectionString="[..]" providerName="System.Data.SqlClient"/>
</connectionStrings>
现在,我想从其他类型的配置源获取连接字符串,但抛出ProviderIncompatibleException
。该例外包含以下消息:
"The provider did not return a providermanifesttoken string".
那么,如何在连接字符串中指定提供者名称?目前,我的字符串包含data source
,database
和其他一些配置设置。
答案 0 :(得分:3)
Provider由连接类型定义,连接由其连接工厂创建,该连接工厂在静态属性Database.DefaultConnectionFactory
中设置。此属性的默认值为SqlConnectionFactory
,因此除非您连接到其他数据库服务器(例如SQL Server CE),否则它应该可以正常工作。如果它不确保您的连接字符串是正确的。如果EF无法连接到SQL服务器,有时会触发此异常(我认为我使用无效凭据,无效的数据库名称或无效的SQL Server实例名称看到此异常)。
编辑:
为了完整性:仅当您将连接字符串传递给上下文时才使用连接工厂。您也可以传递整个连接实例,不会使用连接工厂。提供者清单令牌将根据您将传递给上下文的连接类型推断出来。
答案 1 :(得分:0)
这可能不是你的问题,但是如果你根本无法连接到你的数据库也会发生这个错误 - 我们的网络阻塞了端口1433.打开它,错误就消失了。