Почему NHibernate создает временную таблицу, когда я вызываю метод Update в Query? - PullRequest
0 голосов
/ 05 февраля 2019

Я просто хочу обновить таблицу столбцов на основе условия.Вот мой код:

this.session.Query<EventEntity>()
     .Where(e => [...])
     .Update(c => new { Enabled = true });

Этот вызов генерирует следующий SQL:

insert into HT_event SELECT evententit0_.Id as Id FROM event evententit0_ WHERE [...]
UPDATE event SET Enabled=? WHERE (Id) IN (select Id from HT_event)

Почему NHibernate создает временную таблицу для хранения идентификаторов, а не напрямую генерирует правильное предложение IN?Как я могу отключить это поведение?

Чтобы получить больше информации, я использую отображение наследования иерархии таблиц для классов с отображением по коду.Мой EventEntity - это абстрактный класс:

public abstract class EventEntity { ... }

public class EventMap : ClassMapping<EventEntity> { ... }

У меня есть несколько других сущностей, которые наследуются от EventEntity

public abstract class MatchEntity { ... }

public class MatchMap : JoinedSubclassMapping<MatchEntity> { ... }

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 07 февраля 2019

Hibernate предлагает способ настройки стратегии массового идентификатора, но в данный момент она недоступна для NHibernate: https://github.com/nhibernate/nhibernate-core/issues/2004.

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