如何在连接字符串中为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和一些其他配置设置。

如何在连接字符串中为EF CodeFirst配置ProviderManifestToken

Provider由连接的类型定义,连接由其在静态属性Database.DefaultConnectionFactory中设置的连接工厂创建。此属性的默认值是SqlConnectionFactory,所以除非您连接到不同的数据库服务器(例如SQL server CE),否则它应该简单地工作。如果没有,请确保连接字符串是正确的。如果EF不能连接到SQL server,这个异常有时会被触发(我认为我看到这个异常是无效的凭据,无效的数据库名称或无效的SQL server实例名称)。

编辑:

为完整起见:只有在将连接字符串传递给上下文时才使用连接工厂。您也可以通过整个连接实例,而不使用连接工厂。提供程序清单令牌将从您传递给上下文的连接的类型中推断出来。

这可能不是您的问题,但如果您无法连接到数据库-我们的网络阻塞了端口1433,也会发生此错误。打开后,错误就消失了