Помогите с активной записью Castle Удалить все строки HQL - PullRequest
0 голосов
/ 04 февраля 2009

Итак, я хочу, чтобы в моем классе AR был статический метод для удаления всех записей в указанном выражении. Но очевидно, что у Castle Active Record нет перегрузки для параметров IQuery (по крайней мере, не той версии, которую я использую).

Вот что я «эффективно» пытаюсь достичь:

public static void Delete(string pAppIdentifier) {
  DeleteAll(new EqExpression("AppIdentifier", pAppIdentifier));
}

Можно использовать HQL (поскольку одна из перегрузок для DeleteAll допускает строку HQL где, но я действительно еще не полностью понимаю HQL и всю его мощь, и я надеялся, что один из моих коллег по переполнению стека мог бы помочь мне повернуть это Пример выше в HQL.

1 Ответ

4 голосов
/ 05 февраля 2009
DeleteAll(string.Format("AppIdentifier='{0}'", pAppIdentifier))

это переводится на:

session.Delete(string.Format("from {0} where {1}", type.Name, where));

Кстати, убедитесь, что параметр pAppIdentifier является безопасным, в противном случае вы будете иметь потенциальную уязвимость SQL-инъекции.

Этот и другие распространенные вопросы в ActiveRecord wiki .

...