Как добавить отношение многие ко многим, используя сеанс без сохранения состояния в NHibernate? - PullRequest
1 голос
/ 03 октября 2011

У меня есть две сущности, сопоставленные с БД с помощью NHibernate:

class Entity1
{
    public int Id { get; set; }
    public Entity2[] ReferencedEntities { get; set; }
}

class Entity2
{
    public int Id { get; set; }
}

Для Entity1 я также указываю отношение «многие ко многим» к Entity2:

HasManyToMany(x => x.ReferencedEntities);

Как я понимаю, внутренне NHibernate представляет отношение «многие ко многим», создавая некоторую сущность отношения, такую ​​как:

class Reference
{
    public Entity1 Entity1 { get; set; }
    public Entity2 Entity2 { get; set; }
}

Я добавляю эти сущности в БД, используя сеанс без состояния NHibernate, например:

using (var session = sessionFactory.OpenStatelessSession())
{
    session.Insert(entity1);
    foreach (var entity2 in entity1.ReferencedEntities)
    {
        session.Insert(entity2);
    }
}

Но я также хочу добавить связь между ними. Для этого мне нужно также сохранить сущность отношения. Как добавить отношение «многие ко многим», используя сеанс без сохранения состояния? Нужно ли указывать сущность отношения неявно или есть какой-то другой способ?

1 Ответ

0 голосов
/ 04 октября 2011

Сеанс без сохранения состояния не выполняет каскадные операции, поэтому он не сохраняет изменения и ссылки на элементы массива, если они выполняются в других таблицах.

Ненужные выборки часто являются признаком отсутствия / неправильного кода, например UnsavedValue() или Equals()``GetHashCode()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...