代码之家  ›  专栏  ›  技术社区  ›  Felix D.

无法在配置中设置ProviderService

  •  3
  • Felix D.  · 技术社区  · 7 年前

    我正在尝试移动我的应用程序。将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());
        }
    }
    

    对于最后2行,我得到以下错误:

    “SqlCeProviderServices”不包含接受0个参数的构造函数”

    我不知道要在这里添加什么。。。Intellisense没有显示任何内容,当我使用 GoToDefinition 没有构造函数。。。

    1 回复  |  直到 7 年前
        1
  •  3
  •   Ivan Stoev    7 年前

    通常,此类服务类是作为单例实现的。

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

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

    我现在不能查,但我很确定 SqlProviderService 类具有类似的特性。