2012-03-05 2 views
4

Я использую NHibernate 3.1, и я обновил версию 3.2. Также я использую confOrm 1.0.1.5, и я обновляюсь до 2.0.0.0vVersion. Моя версия Firebird NET Provider - 2,7. Я делаю некоторые изменения своего кода, потому что confOrm больше не содержит ConfOrm.Mapper. Когда я пытаюсь сделать выбор, возвращается следующая ошибка:«Не удалось найти запрос .Net Framework Data Provider» после обновления до NHibernate 3.2

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

Любая помощь приветствуется, спасибо!

ответ

2

Я ошибся с вашей ошибкой и пришел к this thread on Social MSDN. Чтобы обобщить решение (прокрутите вниз для решения Барретта), вероятно, что что-то не так в ваших файлах 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> 

Btw, я гугл для Unable to find the requested .Net Framework Data Provider. It may not be installed., которая является более интересной частью отчётных ошибок. Есть более интересные находки, если выше это не помогает.


Немного дальнейшие исследования привели меня к this blog post, что объясняет, почему это может быть проблемой в ситуации, когда у вас есть несколько dataproviders, и как ее решить. Примечание: этот StackOverflow question связан, как и this one (решение также в machine.config).

0

Абель, спасибо за ваш ответ. Я стараюсь все возможное! Каждое возможное решение, я пытаюсь переустановить VS, Firebird, Net Framework 4, но ничего не работает, поэтому я отформатировал свой компьютер и отлично работал с новой версией nhibernate.

Смежные вопросы