无法在配置中设置ProviderService

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法在配置中设置ProviderService相关的知识,希望对你有一定的参考价值。

我试图将我的app.config ef设置移动到代码。

<configuration>
    <configSections>
        <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
        <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
        <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    </configSections>
    <entityFramework>
        <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework">
            <parameters>
                <parameter value="System.Data.SqlServerCe.4.0" />
            </parameters>
        </defaultConnectionFactory>
        <providers>
            <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
            <provider invariantName="System.Data.SqlServerCe.4.0"
                       type="System.Data.Entity.SqlServerCompact.SqlCeProviderServices, EntityFramework.SqlServerCompact" />
        </providers>
    </entityFramework>
    <system.data>
        <DbProviderFactories>
            <remove invariant="System.Data.SqlServerCe.4.0" />
            <add name="Microsoft SQL Server Compact Data Provider 4.0" 
                 invariant="System.Data.SqlServerCe.4.0" 
                 description=".NET Framework Data Provider for Microsoft SQL Server Compact" 
                 type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
        </DbProviderFactories>
    </system.data>
</configuration>

目前我能够设置的是defaultConnectionFactory

public class SqlServerCompactConfiguration : DbConfiguration
{
    public SqlServerCompactConfiguration()
    {
        SetDefaultConnectionFactory(new System.Data.Entity.Infrastructure.SqlCeConnectionFactory("System.Data.SqlServerCe.4.0"));
        SetProviderFactory("System.Data.SqlServerCe.4.0", new System.Data.SqlServerCe.SqlCeProviderFactory());

        SetProviderServices("System.Data.SqlServerCe.4.0", new System.Data.Entity.SqlServerCompact.SqlCeProviderServices());
        SetProviderServices("System.Data.SqlClient", new System.Data.Entity.SqlServer.SqlProviderServices());
    }
}

对于最后两行,我收到以下错误:

'sqlCeProviderServices'不包含带0个参数的构造函数'

我不知道在这里添加什么...当我使用GoToDefinition没有构造函数时,Intellisense没有显示任何类似的类...

答案

通常这种服务类是作为单例实现的。

例如,SqlProviderServices类包含以下内容:

//
// Summary:
//     The Singleton instance of the SqlProviderServices type.
public static SqlProviderServices Instance { get; }

我现在无法检查,但我很确定SqlProviderService类有类似的东西。

以上是关于无法在配置中设置ProviderService的主要内容,如果未能解决你的问题,请参考以下文章

在 React 应用中设置 Babel 生成的 EcmaScript 版本

无法在导航栏中设置完整图像

Angular 4 无法在标题中设置 CSRF-TOKEN

在 Xcode 构建阶段运行脚本中设置全局环境变量

无法在android中设置背景完全透明

无法在 mint 中设置 gvim 的默认字体