Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Вопрос по NHibernate / 2 сообщений из 2, страница 1 из 1
02.09.2009, 14:21
    #36174755
Dmitry Sukhovilin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по NHibernate
Не могу понять почему не работает вставка дочерних записей (details). Подскажите где ошибка?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public class Person
    {
        public Person()
        {
            Phones = new List<Phone>();
        }
        public virtual int PersonId { get; set; }
        public virtual int Version { get; set; }
        public virtual string FirstName { get; set; }
        public virtual string LastName { get; set; }
        public virtual IList<Phone> Phones { get; set; }
    }

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Models" namespace="Models">
  <class name="Person" table="persons">
    <id name="PersonId" column="person_id" unsaved-value="0"> 
      <generator class="native"/>
    </id>
    <version name="Version" column="version" type="Int32" />
    <property name="FirstName" column="first_name" type="String" length="50" not-null="true"/>
    <property name="LastName" column="last_name" type="String" length="50" not-null="true"/>
    <bag name="Phones" table="phones" cascade="save-update" inverse="true">
      <key column="person_id" />
      <one-to-many class="Phone"/>
    </bag>
  </class>
</hibernate-mapping>
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
public class Phone
    {
        public virtual int PhoneId { get; set; }
        public virtual int Version { get; set; }
        //public virtual int PersonId { get; set; }
        public virtual string PhoneNumber { get; set; }

        public virtual Person Person { get; set; }
    }
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Models" namespace="Models">
  <class name="Phone" table="phones">
    <id name="PhoneId" column="phone_id" unsaved-value="0">
      <generator class="native"/>
    </id>
    <version name="Version" column="version" type="Int32" />
    <property name="PhoneNumber" column="phone_number" type="String" length="50" not-null="true"/>
    <many-to-one name="Person" class="Person" column="person_id" cascade="save-update" />
  </class>
</hibernate-mapping>
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
using (ISession s = sf.OpenSession())
            {

                ITransaction tr = s.BeginTransaction();
                try
                {
                    Person p = new Person() { FirstName = "FirstName", LastName = "LastName" };
                    p.Phones.Add(new Phone() { PhoneNumber = "PhoneNumber" });
                    
                    s.Save(p);
                    s.Flush();

                    tr.Commit();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    tr.Rollback();
                }

            }

Вывод:
console:
NHibernate: INSERT INTO persons (version, first_name, last_name) VALUES (?p0, ?p
1, ?p2);?p0 = 1, ?p1 = 'FirstName', ?p2 = 'LastName'
NHibernate: SELECT LAST_INSERT_ID()
NHibernate: INSERT INTO phones (version, phone_number, person_id) VALUES (?p0, ?
p1, ?p2);?p0 = 1, ?p1 = 'PhoneNumber', ?p2 = NULL
could not insert: [Models.Phone][SQL: INSERT INTO phones (version, phone_number,
person_id) VALUES (?, ?, ?)]
Column 'person_id' cannot be null


Спасибо.
...
Рейтинг: 0 / 0
02.09.2009, 14:48
    #36174817
Dmitry Sukhovilin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по NHibernate
Работает только если добавлять записи вот так:
Код: plaintext
1.
2.
Person p = new Person() { FirstName = "FirstName", LastName = "LastName" };
p.Phones.Add(new Phone() { Person=p, PhoneNumber = "PhoneNumber" });
Может так и задумано? ...
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Вопрос по NHibernate / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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