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