Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Не получается сохранить объект со списком связанных объектов / 3 сообщений из 3, страница 1 из 1
07.06.2011, 08:45
    #37298016
kmaw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается сохранить объект со списком связанных объектов
Делаю так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
public class Book
{


        public virtual long ID { get;  set;  }

        public virtual string ISBN { get; set; }

        public virtual string Title { get; set; }

        public virtual Theme Theme { get; set; }

		public Book()
		{

		}

        public Book(string isbn, string title, long id_theme)
		{
            this.Theme = new Theme(id_theme);
            ISBN = isbn;
            Title = title;
            
		}

        public virtual void AddAutor(string name)
        {
            Autor a = new Autor(name);
            if (Autors == null)
                Autors = new HashSet<Autor>();
            Autors.Add(a);
        }

        public virtual ICollection<Autor> Autors
        {
            get;
            set;
        }
}
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="NHibernate_1" assembly="NHibernate_1">
  <class name="Book" table="Books">
    <id name="ID" unsaved-value="0">
      <column name="ID" not-null="true" />
        <generator class="identity"/>
    </id>
    
    <property name="ISBN" />
    <property name="Title" />


    <many-to-one  class="Theme" name="Theme" column="Id_Theme" />

    <set cascade="save-update" lazy="true" name="Autors" table="Autor">
      <key column="id_book" />
      <one-to-many class="Autor" />
    </set>
  </class>
</hibernate-mapping>

Код: plaintext
1.
2.
3.
4.
Book book = new Book("ISBN", "Новое название книги", 1);
                book.AddAutor("Автор1");
                book.AddAutor("Автор2");
                book.AddAutor("Автор3");
                session.Save(book);

Ругается на ограниечение вторичного ключа Id_book в таблице Autor - судя по всему, туда пытается записать 0. Что не так делаю? Спасибо
...
Рейтинг: 0 / 0
07.06.2011, 09:10
    #37298045
SolYUtor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается сохранить объект со списком связанных объектов
kmaw,

Маппинг для автора покажите.
...
Рейтинг: 0 / 0
07.06.2011, 09:22
    #37298057
kmaw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается сохранить объект со списком связанных объектов
SolYUtor,

разобрался - оказывается в мапинге для авторов надо было указать ссылку на книгу

Код: plaintext
<many-to-one name="Book" column="id_book"  class="Book"  />

(ну и, соответственно, в поле класса автора писать ссылку на книгу)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
public virtual void AddAutor(string name)
        {
            Autor a = new Autor(name);
            if (Autors == null)
                Autors = new HashSet<Autor>();
            a.Book = this;
            Autors.Add(a);
        }
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Не получается сохранить объект со списком связанных объектов / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]