I have a use case where a user gets a list of products, and can select multiple products and active or deactivate them.
The model for this list is immutable, and I h
HQL is the way to go.
Session.CreateQuery("update Product set Active = :active where id in (:ids)")
.SetParameter("active", active)
.SetParameterList("ids", listOfSelectedProductIds)
.ExecuteUpdate();
Since NHibernate 5, you can use LINQ for updates/deletes, like this:
session.Query<Product>()
.Where(p => listOfSelectedProductIds.Contains(p.Id))
.Update(p => new { Active = active });
It will not load entities or increment versions.
https://nhibernate.info/doc/nhibernate-reference/querylinq.html#querylinq-modifying