这个问题困惑我挺长时间了,每次加载hbm.xml文件的时候就报这个错误。
Could not find the dialect in the configuration
下边是我的代码。
1 app.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="nhibernate" type="System.Configuration.NameValueSectionHandler, System, Version=2.0.1.4000,Culture=neutral, PublicKeyToken=b77a5c561934e089,Custom=null" />
</configSections>
<nhibernate xmlns="urn:nhibernate-configuration-2.2">
<add key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider" />
<add key="hibernate.prepare_sql" value="false" />
<add key="hibernate.cache.provider_class" value="NHibernate.Caches.SysCache.SysCacheProvider, NHibernate.Caches.SysCache" />
<add key="relativeExpiration" value="30" />
<add key="hibernate.dialect" value="NHibernate.Dialect.Oracle9Dialect"/>
<add key="hibernate.connection.driver_class" value="NHibernate.Driver.OracleDataClientDriver" />
<add key="hibernate.connection.connection_string" value="Data Source=DATABASE;Persist Security Info=True;User ID=cyd;Password=cyd;Unicode=True;" />
<add key="hibernate.hbm" value="CorpTemplate.Business" />
<property name="dialect">NHibernate.Dialect.Oracle9Dialect </property>
</nhibernate>
</configuration>
2.userinfor 类
namespace NHibernateLearning
{
public class UserInfor
{
private string _userID;
public string UserID
{
get { return _userID; }
set { _userID = value; }
}
private string _userName;
public string UserName
{
get { return _userName; }
set { _userName = value; }
}
}
}
3 UserInfor.hbm.xml
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.0" assembly="NHibernateLearning" namespace="NHibernateLearning">
<class name="NHibernateLearning.UserInfor, UserInfor" table="userinfor">
<id name="UserID" column="userid" type="string">
<generator class="native" />
</id>
<property name="userName" column= "userName" type="string" length="20"/>
</class>
</hibernate-mapping>
4.form的构造函数
public Form1()
{
InitializeComponent();
mCfg.AddXmlFile("D:\\C#\\NHibernateLearning\\NHibernateLearning\\UserInfor.hbm.xml");
sessionFactory = mCfg.BuildSessionFactory();
}
每次执行到mCfg.AddXmlFile("D:\\C#\\NHibernateLearning\\NHibernateLearning\\UserInfor.hbm.xml");就会报刚才那个错误。
Could not compile the mapping document: D:\\C#\\NHibernateLearning\\NHibernateLearning\\UserInfor.hbm.xml"}
我已经把UserInfor.hbm.xml设置成Embedded Resource(嵌入式资源)了。
有没有高手给解答一下啊,刚开始学nhibernate。第一步就卡住了。愁死了。
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<!-- an ISessionFactory instance -->
<session-factory>
<!-- properties -->
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="connection.connection_string_name">Savory</property>
<property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property>
<property name="max_fetch_depth">1</property>
<property name="show_sql">true</property>
</session-factory>
</hibernate-configuration>
我的配置节点是这样的,好像是用<property>不是用<add>……
你把UserInfor.hbm.xml设置成Embedded Resource了,本地就没这个文件了,被编译到dll中了
所以:每次执行到mCfg.AddXmlFile("D:\\C#\\NHibernateLearning\\NHibernateLearning\\UserInfor.hbm.xml");就会报刚才那个错误。
Could not compile the mapping document: D:\\C#\\NHibernateLearning\\NHibernateLearning\\UserInfor.hbm.xml"}
不要设置为Embedded Resource 或者读取签入的资源,例如:
Code