Помогите с Замком Активная Запись удаляет всю строку HQL
-
21-08-2019 - |
Вопрос
Итак, я в принципе хочу иметь статический метод в моем классе AR для удаления всех записей в указанном выражении.Но, по-видимому, у Castle Active Record нет перегрузки для параметров IQuery (по крайней мере, не той версии, которую я использую).
Это то, чего я "эффективно" пытаюсь достичь:
public static void Delete(string pAppIdentifier) {
DeleteAll(new EqExpression("AppIdentifier", pAppIdentifier));
}
Можно использовать HQL (поскольку одна из перегрузок для deleteAll допускает строку where HQL, но я действительно еще не до конца понимаю HQL и все его возможности, и я надеялся, что один из моих коллег по переполнению стека сможет помочь мне превратить приведенный выше пример в HQL.
Решение
DeleteAll(string.Format("AppIdentifier='{0}'", pAppIdentifier))
это переводится на:
session.Delete(string.Format("from {0} where {1}", type.Name, where));
Кстати, убедитесь, что параметр pAppIdentifier безопасен, иначе у вас будет потенциальная уязвимость при внедрении SQL.
Этот и другие распространенные вопросы в ActiveRecord вики.