NHibernate, VS 2010 - PullRequest
       18

NHibernate, VS 2010

0 голосов
/ 21 мая 2010

Здравствуйте, ANRY! Совсем недавно при обучении в университете, столкнулся с NHibernate. Тут же прочитал вашу статью "Здравствуйте, NHibernate!" Понадобилось реализовать не такой подобный магазин: есть, есть товар, клиент, заказ. Соответственно создан 4 таблицы в MSSQL 2010: Товар (id_товара, название, цена), Клиент (id_клиента, имя, фамилия), Заказ (id_заказа, id_клиента, стоимость) и Строка заказа (id_строки заказа, id_заказа, id_товара, количество). Соответственно, создали 4 класса: Товар, Клиент, Заказ, Строка заказа. 4 вопроса-файла, или же можно ограничиться одним? Отладка выдается следующая ошибка: «Не удалось скомпилировать документ сопоставления: Sklad.products.hbm.xml». Причем "билдится" нормально, без ошибок. В чем может быть проблема и как ее можно решить? С уважением, Андрей.


перевод Google

(Я убрал это, но, не говорите по-русски, кто-то еще, пожалуйста, улучшите, если это не так)

Привет, ANRY! Совсем недавно в университете столкнулся с NHibernate. Я прочитал вашу статью "Здравствуйте, NHibernate!" Я пытался реализовать что-то вроде магазина: продукт, заказ клиента. Соответственно я создал 4 таблицы в MSSQL 2010:

  • Goods (id_tovara, name, price)
  • Client (id_klienta, name, surname)
  • Order (id_zakaza, id_klienta, cost)
  • Order Line (id_stroki order id_zakaza, id_tovara, quantity)

Соответственно, я создал 4 класса: Product, Customer, Order, Order Line. У меня такой вопрос: хотите ли вы создать 4-классный файл сопоставления, или вы можете сделать только один?

А при отладке выдает следующую ошибку:

Could not compile the mapping document: `Sklad.products.hbm.xml`

Сборка нормальная, ошибок нет. В чем может быть проблема и как я могу ее решить?

С уважением, Андрей.

1 Ответ

0 голосов
/ 24 мая 2010

вы можете поместить все ваши сопоставления классов в один файл. рассмотрим allmaps.hbm.xml

<?xml version="1.0" encoding="utf-8"?>
 <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
  <class  name="MyAsm.Foo,MyAsm" table="Foo">
   <id name="Id>
    <generator class="native" />
   </id>
   <property name="AName" type="string" />
  </class>

  <class  name="MyAsm.Bar,MyAsm" table="Bar">
   <id name="Id>
    <generator class="native" />
   </id>
   <property name="BName" type="string" />
  </class>
</hibernate-mapping>

однако я бы советовал против этого, особенно если ваш проект содержит более 5 классов, для ясности.

также не забудьте установить свойства файла open в Visual Studio и установить «Build Action» -> Embedded Resource

Теперь, эта ошибка означает, что вы сделали ошибку при сопоставлении ее самостоятельно (например, это может быть опечатка, подобная type="streng" вместо type="string"

В библиотеке NHibernate вы найдете файл «nhibernate-mapping.xsd». Если вы скопируете этот файл в $ VisualStudioInstallDir \ Xml \ Schemas (и перезагрузите Visual Studio), у вас будет поддержка intellisense для файлов сопоставления (или любого XML с тем же пространством имен).

Это очень полезно, особенно при изучении nhibernate, и вы можете избежать глупых ошибок.

...