powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как автоматически сохранить свойства класса в NHibernate?
2 сообщений из 2, страница 1 из 1
Как автоматически сохранить свойства класса в NHibernate?
    #36568569
victor_kr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На примере. Есть классы:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
public class User {
    virtual public long Id {get;set;}
    virtual public string Name {get;set;}
}

public class Computer {
    virtual public long Id {get;set;}
    virtual public string Name {get;set;}
}

public class UserToComputer {
    virtual public User {get;set;}
    virtual public Computer {get;set;}
}

Для классов есть отображения NHibernate:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<class name="User">
  <id name="Id">
    <generator class="identity"/>
  </id>
  <property name="Name"/>
</class>

<class name="Computer">
  <id name="Id">
    <generator class="identity"/>
  </id>
  <property name="Name"/>
</class>

<class name="UserToComputer">
  <composite-id>
    <key-many-to-one name="User" column="UserId" class="User"/>
    <key-many-to-one name="Computer" column="ComputerId" class="Computer"/>
  </composite-id>
</class>

При попытке выполнить код:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
var user = new User {Name = "User 1"};
var computer = new Computer {Name = "Computer 1"};
var userToComputer = new UserToComputer {User = user; Computer = computer;}

using (var session = sessionFactory.OpenSession())
{
    session.Save(userToComputer);
    session.Flush();
}

возникает исключение:

NHibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing

Если в предыдущий код добавить сохранение user и computer перед сохранением userToComputer, то все работает:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
var user = new User {Name = "User 1"};
var computer = new Computer {Name = "Computer 1"};
var userToComputer = new UserToComputer {User = user; Computer = computer;}

using (var session = sessionFactory.OpenSession())
{
    session.SaveOrUpdate(user);
    session.SaveOrUpdate(computer);
    session.Save(userToComputer);
    session.Flush();
}

Есть ли возможность создать такие отображения NHibernate, чтобы сведения о user и computer сохранялись автоматически перед сохранением userToComputer? Спасибо.
...
Рейтинг: 0 / 0
Как автоматически сохранить свойства класса в NHibernate?
    #36568817
megaton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Посмотрите тут .
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как автоматически сохранить свойства класса в NHibernate?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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