我不知道还能向谁寻求帮助。

在我的公司,我们正在迁移系统。 2.0 到 3.5 净

我们使用企业库 3.1,我们正在迁移到 5.0

我使用了配置文件的工具

编译没问题,但是当我运行时,我收到以下消息:

尝试获取数据库类型的实例时发生激活错误,键为“MrvFramework”

依赖解析失败,type = "Microsoft.Practices.EnterpriseLibrary.Data.Database",name = "MrvFramework"。
异常发生时:解决时。


异常是: InvalidOperationException - 无法构造类型数据库。您必须配置容器以提供此值。

异常时,容器为:
解决 Microsoft.Practices.EnterpriseLibrary.Data.Database


我在网上花了很多时间:

我做了这个测试:

  • 项目中引用了企业库所需的所有DLL
  • var database = DatabaseFactory.CreateDatabase(MrvFramework)
  • var database = EnterpriseLibraryContainer.Current.GetInstance<Database>(MrvFramework)
  • var database = new SqlDatabase(MrvFramework)

  • 这是我的 app.config(代码段)
    <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" />
    
    <dataConfiguration defaultDatabase="MRVFramework"/>
    <connectionStrings>
       <add name="MRVFramework" connectionString="Data Source=H:\MRV\Projetos\MRV Framework\Branch\Update SqlServerCe\MRV.Framework.Seguranca.Console\MRVFramework.sdf;Persist Security Info=True" providerName="System.Data.SqlClient"/>
    </connectionStrings>
    

    这是我的 machine.config 文件
    <DbProviderFactories>
      <add name="Odbc Data Provider" invariant="System.Data.Odbc" description=".Net Framework Data Provider for Odbc" type="System.Data.Odbc.OdbcFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      <add name="OleDb Data Provider" invariant="System.Data.OleDb" description=".Net Framework Data Provider for OleDb" type="System.Data.OleDb.OleDbFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      <add name="OracleClient Data Provider" invariant="System.Data.OracleClient" description=".Net Framework Data Provider for Oracle" type="System.Data.OracleClient.OracleClientFactory, System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      <add name="SqlClient Data Provider" invariant="System.Data.SqlClient" description=".Net Framework Data Provider for SqlServer" type="System.Data.SqlClient.SqlClientFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      <add name="Microsoft SQL Server Compact Data Provider" invariant="System.Data.SqlServerCe.3.5" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=3.5.1.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    </DbProviderFactories>
    

    最佳答案

    将此代码添加到您的 web.config

    <runtime>
       <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
         <qualifyAssembly partialName="Microsoft.Practices.EnterpriseLibrary.Data" fullName="Microsoft.Practices.EnterpriseLibrary.Data, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
       </assemblyBinding>
    </runtime>
    

    关于c# - 企业库迁移 - 您必须配置容器以提供此值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12646658/

    10-14 07:49