.NET nHibernate:找不到资源文件

时间:2013-06-10 14:02:17

标签: .net nhibernate

我似乎无法让我的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);

由于某种原因,它一直告诉我无法找到资源文件......

2 个答案:

答案 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();

要解决您遇到的异常,我会建议:

  1. 将您的NHibernate配置文件重命名为hibernate.cfg.xml(如果它无法在app / web.config中找到它,则默认查找该文件)
  2. 将配置放在app / web.config中(参见http://nhforge.org/blogs/nhibernate/archive/2009/07/17/nhibernate-configuration.aspx
  3. 在对Configure的调用中指定NHibernate配置文件的名称 - 即。 cfg.Configure( “我的 - 的nhibernate-config.config”)