Многофункциональные CRUD-операции NHibernate - PullRequest
0 голосов
/ 24 апреля 2018

Я ищу пример операций CRUD для схемы NHibernate "многие к одному". Я нашел только основные примеры, и они мне не помогли. Я пытаюсь вставить новый объект в БД и получить NHibernate.Exceptions.GenericADOException

Код для операции вставки:

 public bool CreateBook(Book book)
 {
     try
     {
         using (ISession connectionDB = NHibertnateSession.OpenSession())
         {
             using (ITransaction transaction = connectionDB.BeginTransaction())
             {
                 connectionDB.Save(book);
                 transaction.Commit();
             }
         }
          return true;
     }
     catch
     {
         return false;
     }
 }

Думаю, мне нужно сделать что-то подобное, чтобы это заработало:

  1. создать нового автора
  2. создать новое издательство
  3. получить идентификатор нового автора и нового издательства
  4. вставить новую книгу в таблицу, где authorForeignKey = newAuthorId and publishingForeignKey = newPublishingId

Это странное решение, не так ли? И какой способ вставки данных в таком случае является лучшим?


Мои классы моделей (Книга, Автор, Издательский дом) здесь

А это мой hbm.xml файл

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" auto-import="true" 
 assembly="InFolio_HomeLib" namespace="InFolio_HomeLib.Models">

<class name="Author" table="Author" dynamic-update="true" >
    <cache usage="read-write"/>
        <id name="Id" column="Id" type="int">
        <generator class="native" />
        </id>
    <property name="FirstName" />
    <property name="LastName" />
</class>

<class name="PublishingHouse" table="PublishingHouse" dynamic-update="true">
    <cache usage="read-write"/>
        <id name="Id" column="Id" type="int">
        <generator class="native" />
        </id>
    <property name="Name" />
    <property name="City" />
</class>

<class name="Book" table="Book" dynamic-update="true" >
    <cache usage="read-write"/>
        <id name="Id" column="Id" type="int">
        <generator class="native" />
        </id>
    <property name="UDK" />
    <property name="BBK" />
    <property name="AuthorsSign" />
    <property name="ISBNrus" />
    <property name="ISBNeng" />   

    <many-to-one name="Author" column="AuthorId" />
    <property name="Name" /> 
    <many-to-one name="PublishingHouse" column="PublishingId" />

    <property name="Year" />
    <property name="Pages" />
    <property name="Circulation" />
    <property name="IsRead" />
    <property name="Rating" />
    <property name="Annotation" />
</class>

P.S. Если у вас есть примеры / ссылки на другие операции CRUD, это было бы здорово.

...