Я начинаю играть с (свободно) nHibernate, и мне интересно, если кто-то может помочь со следующим. Я уверен, что это полный вопрос.
Я хочу сделать:
delete from TABX where name = 'abc'
, где таблица TABX определяется как:
ID int
name varchar(32)
...
Я строю код на основе интернет-примеров:
using (ITransaction transaction = session.BeginTransaction())
{
IQuery query = session.CreateQuery("FROM TABX WHERE name = :uid")
.SetString("uid", "abc");
session.Delete(query.List<Person>()[0]);
transaction.Commit();
}
но, увы, он генерирует два запроса (один выбор и один удаление). Я хочу сделать это в одном выражении, как в моем исходном SQL. Как правильно это сделать?
Кроме того, я заметил, что в большинстве примеров в Интернете люди, как правило, всегда заключают все запросы в транзакции. Это почему? Если я выполняю только одно заявление, это кажется излишним. Люди склонны просто бездумно вырезать и вставлять, или есть какая-то причина? Например, в моем запросе выше, если мне удастся получить его от двух запросов до одного, я смогу удалить транзакцию начала / принятия, нет?
если это имеет значение, я использую PostgreSQL для экспериментов.