配置mvc3和Nhibernate时出现以下错误。任何人都可以指导我,我错过了。
方言未设定。设置属性hibernate.dialect。 描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪,以获取有关错误及其在代码中的起源位置的更多信息。
异常详细信息:NHibernate.HibernateException:未设置方言。设置属性hibernate.dialect。
来源错误:
第16行:{ 第17行:NHibernate.Cfg.Configuration配置= new NHibernate.Cfg.Configuration(); 第18行:configuration.AddAssembly(System.Reflection.Assembly.GetExecutingAssembly()); 第19行:sessionFactory = configuration.BuildSessionFactory(); 第20行:}
我的web.config如下:
<configSections> <section name="cachingConfiguration"type="Microsoft.Practices.EnterpriseLibrary.Caching.Configuration.CacheManagerSettings,Microsoft.Practices.EnterpriseLibrary.Caching"/> <section name="log4net"type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/> <section name="hibernate-configuration"type="NHibernate.Cfg.ConfigurationSectionHandler,
NHibernate“/&gt;
<appSettings>
<add key="BusinessObjectAssemblies" value="Keeper.API"></add>
<add key="ConnectionString" value="Server=localhost\SQLSERVER2005;Database=KeeperDev;User=test;Pwd=test;"></add>
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="dialect">NHibernate.Dialect.MsSql2000Dialect</property>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="connection.connection_string">Server=localhost\SQLServer2005;Database=KeeperDev;User=test;Pwd=test;</property>
<property name="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property>
</session-factory>
</hibernate-configuration>
答案 0 :(得分:3)
从您的连接字符串中,您似乎正在连接到2k5服务器。如果是,according to the NHibernate docs,则应将方言设置为NHibernate.Dialect.MsSql2005Dialect
。
这是来自文档的示例配置:
<session-factory>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property>
<property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
<property name="connection.connection_string">Server=(local);Initial Catalog=dbname;User Id=user;Password=********</property>
</session-factory>
您可以尝试将方言设置为NHibernate.Dialect.MsSql2005Dialect
。
答案 1 :(得分:0)
我犯了一个简单而愚蠢的错误。我没有包含正确版本的NHibernate。
感谢@Marjin回复。