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

时间:2011-07-25 12:06:38

标签: c# entity-framework connection-string ef-code-first

目前,我正在将数据库名称传递给DbContext的构造函数。在我的connectionStrings文件的App.Config部分中,我添加了一个连接字符串并指定了提供程序名称:

<connectionStrings>
    <add name="myConnectionString" connectionString="[..]" providerName="System.Data.SqlClient"/>
</connectionStrings>

现在,我想从其他类型的配置源获取连接字符串,但抛出ProviderIncompatibleException。该例外包含以下消息:

"The provider did not return a providermanifesttoken string".

那么,如何在连接字符串中指定提供者名称?目前,我的字符串包含data sourcedatabase和其他一些配置设置。

2 个答案:

答案 0 :(得分:3)

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

编辑:

为了完整性:仅当您将连接字符串传递给上下文时才使用连接工厂。您也可以传递整个连接实例,不会使用连接工厂。提供者清单令牌将根据您将传递给上下文的连接类型推断出来。

答案 1 :(得分:0)

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