4

私は NHibernate 3.1 を使用しており、バージョン 3.2 に更新しました。また、confOrm 1.0.1.5 を使用し、2.0.0.0vVersion に更新します。私の Firebird NET Provider のバージョンは 2.7 です。confOrm にはConfOrm.Mapperもう含まれていないため、コードをいくつか変更します。選択しようとすると、次のエラーが返されます。

NHibernate.HibernateException : Could not create the driver from NHibernate.Driver.FirebirdClientDriver, NHibernate, Version=3.2.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4.
  ----> System.Reflection.TargetInvocationException : Exception has been thrown by the target of an invocation.
  ----> System.ArgumentException : Unable to find the requested .Net Framework Data Provider.  It may not be installed.
at NHibernate.Connection.ConnectionProvider.ConfigureDriver(IDictionary`2 settings)
at NHibernate.Connection.ConnectionProviderFactory.NewConnectionProvider(IDictionary`2 settings)
at NHibernate.Cfg.SettingsFactory.BuildSettings(IDictionary`2 properties)
at NHibernate.Cfg.Configuration.BuildSettings()
at NHibernate.Cfg.Configuration.BuildSessionFactory()
at SoftManager.Dao.Util.SessionManager.get_factory() in SessionManager.cs: line 15
at SoftManager.Dao.Util.SessionManager.getSession() in SessionManager.cs: line 23
at SoftManager.Dao.GenericDao`1.findUniqueByWhere(Restricao rest, Order order) in GenericDao.cs: line 144
at SoftManager.Dao.CidadeDao.findUniqueByWhere(Restricao rest, Order order) in CidadeDao.cs: line 52
at SoftManager.Teste.TesteConsulta.consultaCidade2() in TesteConsulta.cs: line 52
at SoftManager.Teste.TesteConsulta.testes() in TesteConsulta.cs: line 17
--TargetInvocationException
at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, ref Boolean canBeCached, ref RuntimeMethodHandleInternal ctor, ref Boolean bNeedSecurityCheck)
at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache)
at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean skipCheckThis, Boolean fillCache)
at System.Activator.CreateInstance(Type type, Boolean nonPublic)
at NHibernate.Bytecode.ActivatorObjectsFactory.CreateInstance(Type type)
at NHibernate.Connection.ConnectionProvider.ConfigureDriver(IDictionary`2 settings)
--ArgumentException
at NHibernate.Driver.ReflectionBasedDriver..ctor(String providerInvariantName, String driverAssemblyName, String connectionTypeName, String commandTypeName)
at NHibernate.Driver.FirebirdClientDriver..ctor()

どんな助けでも大歓迎です、ありがとう!

4

2 に答える 2

2

私はあなたのエラーをグーグルで検索し、ソーシャル MSDN のこのスレッドにたどり着きました。解決策を要約すると (下にスクロールして Barrett の解決策を見つけてください)、machine.config ファイルに何か問題がある可能性があります。このユーザーは、次のように、machine.config に余分な終了タグがあることを報告しました。

<!-- notice the double closing tag -->
<system.data>
    <DbProviderFactories>
        <add name="Odbc Data Provider" invariant="System.Data.Odbc" ... />
        <add name="OleDb Data Provider" invariant="System.Data.OleDb" ... />
        <add name="OracleClient Data Provider" invariant="System.Data ... />
        <add name="SqlClient Data Provider" invariant="System.Data ... />
        <add name="IBM DB2 for i .NET Provider" invariant="IBM.Data ... />
        <add name="Microsoft SQL Server Compact Data Provider" ... /></DbProviderFactories>
    <DbProviderFactories/>
</system.data>

ところで、リクエストされた .Net Framework Data Provider が見つかりませんでした。インストールされていない可能性があります。、報告されたエラーのより興味深い部分です。上記が役に立たない場合は、さらに興味深い発見があります。


もう少し調査した結果、このブログ投稿にたどり着きました。これは、複数のデータプロバイダーがある状況でこれが問題になる理由と、その解決方法を説明しています。注:このStackOverflowの質問は、これと同様に関連しています(machine.configにも解決策があります)。

于 2012-03-05T20:48:54.590 に答える
0

アベル、答えてくれてありがとう。私は可能な限りすべてを試します!考えられるすべての解決策として、VS、Firebird、Net Framework 4 を再インストールしようとしましたが、何も機能しないため、PC をフォーマットし、新しいバージョンの nhibernate で正常に動作しました。

于 2012-03-06T20:00:06.440 に答える