找不到NHibernate映射文件:noob问题

时间:2011-09-15 22:38:20

标签: .net nhibernate

与NHibernate一起努力,并感谢任何帮助。我有一个名为'orders'的表和一个名为'Order'的类。我正在使用MVC3,这是我的例外

NHibernate.MappingException:无法编译映射文档:Orders.hbm.xml ---> System.IO.FileNotFoundException:找不到文件'C:\ Program Files(x86)\ Common Files \ Microsoft Shared \ DevServer \ 10.0 \ Orders.hbm.xml'。

(这是我尝试启动应用程序的时候)。我猜它是a)映射文件本身的问题,因此不会将其复制到IIS部署文件夹,或者我需要将其定义为某种'embedde resorce'(它是)。对此有点新鲜......

我的映射文件位于'Mappings / Orders.hbm.xml'中,看起来像这样

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                   assembly="Munch"
                   namespace="Munch.Models">

  <class name="Order" table="orders">
    <id name="id">
      <generator class="int32" />
    </id>
    <property name="Name" />
  </class>

</hibernate-mapping>

如果有人能告诉我什么是错的,我将非常感激(或者即使你可以告诉我如何获得更多关于如何获得更多错误细节的信息)

由于

PS我是来自Java / Spring / JPA的土地,但试图为我的团队组建一个不错的堆栈。我希望这些.NET版本可以很好地与.NET中的MVC3一起使用,但是如果有人想推荐更好的技术,那我就听见了!

2 个答案:

答案 0 :(得分:1)

将hbm文件作为资源嵌入到程序集中是个好主意。在Visual Studio Solution Explorer中:

右键单击Order.hbm.xml - &gt;属性 - &gt;设置Build Action = EmbeddedResource。让NHibernate通过调用AddAssembly来了解hbm文件的位置:

var config = new Configuration();
...
config.AddAssembly("AssemblyThatContainsOrders");

ISessionFactory sessionFactory = config.BuildSessionFactory();

有关详细信息,请参阅this。生成器映射应如下所示:

<id name="id" column="Id" type="Int32">
    <generator class="native" />
</id>

答案 1 :(得分:0)

你的发电机声明是错误的。有关生成器类属性的有效值,请参阅the documentation中的第5.1.4节。