4 votes

Enterprise Library Migration - Vous devez configurer le conteneur pour qu'il fournisse cette valeur.

Je ne sais pas à qui d'autre demander de l'aide.

Dans mon entreprise, nous sommes en train de migrer le système. 2.0 à 3.5 net

Nous utilisons la bibliothèque d'entreprise 3.1 et nous sommes en train de migrer vers la 5.0.

J'ai utilisé l'outil pour le fichier de configuration

La compilation s'est déroulée correctement mais lorsque je l'exécute, je reçois ce message :

Une erreur d'activation s'est produite lors de l'obtention d'une instance de type Base de données, clé "MrvFramework"

La résolution de la dépendance a échoué, type = "Microsoft.Practices.EnterpriseLibrary.Data.Database", name = "MrvFramework". Exception occurred while : while resolving.

L'exception est la suivante : InvalidOperationException - Le type Database ne peut pas être construit. Vous devez configurer le conteneur pour qu'il fournisse cette valeur.

Au moment de l'exception, le conteneur était : Résolution de Microsoft.Practices.EnterpriseLibrary.Data.Database

J'ai passé beaucoup de temps sur Internet :

J'avais fait ces tests :

  • Toutes les DLL requises par la bibliothèque d'entreprise sont référencées dans le projet.
  • var database = DatabaseFactory.CreateDatabase(MrvFramework)
  • var database = EnterpriseLibraryContainer.Current.GetInstance<Database>(MrvFramework)
  • var database = new SqlDatabase(MrvFramework)

Voici mon app.config (snippet-code)

<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>

Voici mon fichier 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>

1voto

Ajoutez ce code à votre 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>

0voto

J'ai obtenu la même exception en exécutant le code ci-dessous ;

Database db = DatabaseFactory.CreateDatabase();

L'exception a été résolue une fois que j'ai mis à jour le code en

Database db = DatabaseFactory.CreateDatabase("Connection String"); // config file string

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X