Как удалить несколько объектов дб с Nhibernate?

Можно перетащить код в ToolBox. Попробуйте его!

12
задан Newbie 8 December 2009 в 18:50
поделиться

2 ответа

HQL поддерживает предложение IN, и если вы используете setParameterList, вы даже можете передать коллекцию.

var idList = new List<int>() { 5,3,6,7 };

_session.CreateQuery("DELETE MyDataClass o WHERE o.Id IN (:idList)")
    .SetParameterList("idList", idList)
    .ExecuteUpdate();

Имейте в виду, как упоминалось ddango в комментарии, что каскады отношений, указанные в ваших объектах не будет выполняться, поскольку выполнение запроса HQL просто преобразуется в запрос БД и фактически не загружает никаких объектов сущности.

19
ответ дан 2 December 2019 в 04:33
поделиться

вы можете использовать HQL для удаления нескольких объектов

Найдите здесь delete - пример session.delete

Пример HQL DELETE (вы можете использовать IN с HQL):

ISession session = sessionFactory.OpenSession();
ITransaction tx = session.BeginTransaction();

String hqlDelete = "delete Customer c where c.name = :oldName";
// or String hqlDelete = "delete Customer where name = :oldName";
int deletedEntities = session.CreateQuery( hqlDelete )
        .SetString( "oldName", oldName )
        .ExecuteUpdate();
tx.Commit();
session.Close();
5
ответ дан 2 December 2019 в 04:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: