我似乎无法让我的nHibernate测试项目运行,我正在使用以下配置文件和代码:
country.hbm.xml标记为嵌入资源:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="SVL.Models.CountryModel, SVL" table="country">
<id name="Id" type="int" />
<property name="Name" type="String" length="200" />
</class>
</hibernate-mapping>
我的nhibernate配置文件:
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<!-- properties -->
<property name="connection.provider">
NHibernate.Connection.DriverConnectionProvider
</property>
<property name="connection.driver_class">
NHibernate.Driver.MySqlDataDriver
</property>
<property name="connection.connection_string">
Server=localhost;Database=svl;User ID=root;Password=pfje1008;
</property>
<property name="dialect">
NHibernate.Dialect.MySQL5Dialect
</property>
<mapping resource="country.hbm.xml" assembly="SVL" />
</session-factory>
</hibernate-configuration>`
最后是设置hibernate配置的代码:
var cfg = new Configuration();
cfg.Configure();
var sessionFactory = cfg.BuildSessionFactory();
var thisAssembly = typeof(T).Assembly;
cfg.AddAssembly(thisAssembly);
由于某种原因,它一直告诉我无法找到资源文件......
答案 0 :(得分:2)
尝试摆脱<mapping resource="country.hbm.xml" assembly="SVL" />
行,我不记得在使用嵌入资源时这样做。
答案 1 :(得分:0)
有几个问题,首先是你正在调用的.Configure方法正在寻找一个带有连接字符串,方言和其他设置的文件(或者可能会检查你的web.config这些),其次是你'在将程序集添加到配置之前重新构建会话工厂。
在构建会话工厂之前,需要将程序集添加到配置中,因为构建会话工厂的过程基于配置的当前状态。
类似于:
var cfg = new Configuration();
var thisAssembly = typeof(T).Assembly;
cfg.AddAssembly(thisAssembly);
cfg.Configure();
var sessionFactory = cfg.BuildSessionFactory();
要解决您遇到的异常,我会建议: