Не удается найти файл сопоставления NHibernate: вопрос noob - PullRequest
1 голос
/ 16 сентября 2011

Бороться с 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».

(это когда я пытаюсь запустить приложение). Я предполагаю, что это а) проблема с самим файлом сопоставления, и поэтому я не копирую его в папку развертывания 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-версии хорошо подходят для работы с MVC3 в .NET, но если кто-то захочет порекомендовать более совершенные технологии, у меня все в ушах!

Ответы [ 2 ]

1 голос
/ 16 сентября 2011

Хорошей идеей будет встроить файл hbm как ресурс в вашу сборку.В Visual Studio Solution Explorer:

Щелкните правой кнопкой мыши файл Order.hbm.xml -> Свойства -> Установить действие сборки = EmbeddedResource.И сообщите NHibernate о местонахождении файла hbm, позвонив AddAssembly:

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

ISessionFactory sessionFactory = config.BuildSessionFactory();

См. this для получения подробной информации.И отображение генератора должно выглядеть так:

<id name="id" column="Id" type="Int32">
    <generator class="native" />
</id>
0 голосов
/ 16 сентября 2011

Ваше объявление генератора неверно.См. Раздел 5.1.4 в документации для правильных значений атрибута класса генератора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...