2010-09-15 7 views
2

J'utilise sql server 2005problème de connexion NHibernate

mais ayant un message d'erreur sur _sessionFactory = configuration.BuildSessionFactory();

Qu'est-ce qui ne va pas et comment puis-je le corriger?


Mon hibernate.cfg.xml

<property name="connection.driver_class">NHibernate.Connection.DriverConnectionProvider</property> 
<property name="dialect">NHibernate.Dialect.MsSql2000Dialect</property> 
<!--<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>--> 
<property name="connection.connection_string">Server=localhost\SQLServer2005;database=NHibernate101;Integrated Security=True;</property> 
<property name="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property> 
<mapping assembly="Infrastructure"></mapping> 

et mon web.config dans mon

<connectionStrings> 
    <add name="ApplicationServices" connectionString="Server=localhost\SQLServer2005;database=NHibernate101;" providerName="NHibernate.Connection.DriverConnectionProvider"/> 
</connectionStrings> 

message d'erreur:

NHibernate.Hiber nateException n'a pas été gérée par le code utilisateur Message = Impossible de créer le pilote à partir de NHibernate.Connection.DriverConnectionProvider. Source = NHibernate StackTrace: à NHibernate.Connection.ConnectionProvider.ConfigureDriver (IDictionary 2 settings) at NHibernate.Connection.ConnectionProvider.Configure(IDictionary 2 paramètres) à NHibernate.Connection.ConnectionProviderFactory.NewConnectionProvider (IDictionary 2 settings) at NHibernate.Cfg.SettingsFactory.BuildSettings(IDictionary 2 propriétés) à NHibernate.Cfg.Configuration.BuildSettings() à NHibernate.Cfg.Configuration.BuildSessionFactory() à Core.Domain.Repositories.NHibernateHelper.get_SessionFactory() dans C: \ Documents and Settings \ nHibernate101 \ NHibernate101 final \ NHibernate101 \ Core \ Domain \ Repositories \ NHibernateHelper.cs: ligne 22 à Core.Domain.Repositories.NHibernateHelper.OpenSession() dans C: \ Documents and Settings \ nHibernate101 \ NHibernate101 final \ NHibernate101 \ Core \ Domain \ Repositories \ NHibernateHelper.cs: ligne 30 à Core.Domain.Repositories.PostRepository.Core.IRepository.GetAll() dans C: \ Documents and Settings \ nHibernate101 \ NHibernate101 final \ NHibernate101 \ Core \ Domain \ Repositories \ PostRepository.cs: ligne 59 à NHibernate101.Controllers.PostsController.Index() dans C: \ Documents and Settings \ nHibernate101 \ nHibernate101 final \ nHibernate101 \ nHibernate101 \ Controllers \ PostsController.cs: ligne 22 à lambda_method (Clôture, ControllerBase, Object []) à System.Web.Mvc.ActionMethodDispatcher.Execute (contrôleur ControllerBase, paramètres Object []) à System.Web.Mvc.ReflectedActionDescriptor.Execute (ControllerContext controllerContext, IDictionary 2 parameters) at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary 2 paramètres) à System.Web.Mvc.ControllerActionInvoker. <> c__DisplayClassd.b__a() à System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter (filtre IActionFilter, ActionExecutingContext preContext, Func 1 continuation) InnerException: System.InvalidCastException Message=Unable to cast object of type 'NHibernate.Connection.DriverConnectionProvider' to type 'NHibernate.Driver.IDriver'. Source=NHibernate StackTrace: at NHibernate.Connection.ConnectionProvider.ConfigureDriver(IDictionary 2 paramètres) InnerException:

Répondre

1

Vous recevez cette erreur car dans votre fichier Hibernate.cfg.xml, vous indiquez à NHibernate d'utiliser la classe NHibernate.Connection.DriverConnectionProvider pour la propriété connection.driver_class. La propriété connection.driver_class attend une interface IDriver pendant la NHibernate.Connection.DriverConnectionProvider ne l'est pas.

+0

Quel devrait être le nom du pilote? – learning

+0

NHibernate.Driver.SqlClientDriver –

1

Votre configuration est incorrecte. Utilisez celui-ci:

<property name="hibernate.connection.provider">NHibernate.Connection.DriverConnectionProvider</property> 
<property name="hibernate.connection.driver_class">NHibernate.Driver.SqlServerCeDriver</property> 
<property name="dialect">NHibernate.Dialect.MsSql2000Dialect</property> 
<property name="connection.connection_string">Server=localhost\SQLServer2005;database=NHibernate101;Integrated Security=True;</property> 
<property name="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property> 
<mapping assembly="Infrastructure"></mapping> 
+0

Désolé, cela ne permet pas non plus – learning

+0

'm ayant le message d'erreur: [InvalidCastException:. Impossible de jeter l'objet de type 'NHibernate.Connection.DriverConnectionProvider' taper 'NHibernate.Driver.IDriver'] NHibernate.Connection. ConnectionProvider.ConfigureDriver (paramètres IDictionary'2) +194 – learning

+0

C'est parce que vous avez mélangé le fournisseur de connexion et la classe de pilote de connexion dans votre configuration. –

0

Est-il possible que vous ayez spécifié le dialecte SQL2000 plutôt que le 2005? Je ne l'ai jamais eu, donc je ne suis pas sûr que cela déclencherait cette erreur.