1
Как я могу заменить запрос HQL ниже с помощью API QueryOver?Crossjoin using QueryOver
var sql = "from Role r, Action a where r.Active = :active and a.Active = :active";
var result = manager.Session.GetISession().CreateQuery(sql)
.SetBoolean("active", true).List();
Гм, нет, это не будет. Он будет генерировать один оператор SQL ... –
Хотя решение выше позволяет избежать проблем с магическими строками, но я не верю, что он хороший. Это связано с тем, что вышеупомянутое утверждение приведет NHibernate к многократной базе данных. Скажем, таблица ролей имеет 4 записи, таблица действий имеет 6 записей. Первый запрос NHibernate выполняется, чтобы вернуть 4 записи из таблицы ролей. Затем для каждой возвращенной записи NHibernate будет считывать базу данных, чтобы получить 6 записей из таблицы действий. Другими словами, количество маршрутов в базе данных равно количеству возвращенных записей из первого запроса и добавлению к одному. – tilonthuduc
Andrew, я попробовал, и результат - то, что я описал выше. Могли бы вы сделать то же самое? – tilonthuduc