企业库迁移 - 您必须配置容器以提供此值

时间:2012-09-28 20:03:12

标签: c# sql-server-ce enterprise-library-5

我不知道还有谁可以寻求帮助。

我公司正在迁移系统。 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>

2 个答案:

答案 0 :(得分:1)

将此代码添加到您的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>

答案 1 :(得分:0)

我在执行以下代码时遇到了同样的异常;

Database db = DatabaseFactory.CreateDatabase();

我将代码更新为

后解决了异常
Database db = DatabaseFactory.CreateDatabase("Connection String"); // config file string