Обновление записей Nhibernate и Iqueryable - PullRequest
3 голосов
/ 09 сентября 2011

Допустим, я хочу обновить все строки таблицы, имеющие какой-либо статус, с другим статусом. Я использую шаблон Repository с Nhibernate. У меня есть метод в моем репозитории, чтобы получить мне Iqueryable<T>.

Итак, как мне написать обновление для этого. Я не хочу получать все элементы, конвертировать в List и затем обновлять его. На самом деле я даже не хочу, чтобы Nhibernate выбирал мне список строк. ему просто нужно запустить оператор обновления самостоятельно в БД со значениями, которые я предоставляю.

так, как я могу достичь этого ..

1 Ответ

2 голосов
/ 10 сентября 2011

NHibernate поддерживает этот тип массового обновления через HQL. См. http://www.nhforge.org/doc/nh/en/index.html#batch-direct. Попробуйте что-нибудь подобное этому ...

public class ThingRepository : Repository<Thing>, IThingRepository
{
    public int UpdateStatus(ThingStatus oldStatus, ThingStatus newStatus)
    {
        var query = Session.CreateQuery("UPDATE Thing SET Status = :newStatus WHERE Status = :oldStatus")
            .SetEnum("oldStatus", oldStatus)
            .SetEnum("newStatus", newStatus);

        return query.ExecuteUpdate();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...