Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Batch Update in NHibernate

Tags:

Does batch update command exist in NHibernate? As far as I am aware it doesn't. So what's the best way to handle this situation? I would like to do the following:

  1. Fetch a list of objects ( let's call them a list of users, List<User> ) from the database
  2. Change the properties of those objects, ( Users.Foreach(User=>User.Country="Antartica")
  3. Update each item back individually ( Users.Foreach(User=>NHibernate.Session.Update(User)).
  4. Call Session.Flush to update the database.

Is this a good approach? Will this resulted in a lot of round trip between my code and the database?

What do you think? Or is there a more elegant solution?

like image 720
Graviton Avatar asked Apr 23 '09 09:04

Graviton


People also ask

What is fetch in NHibernate?

Fetching strategies. A fetching strategy is the strategy NHibernate will use for retrieving associated objects if the application needs to navigate the association. Fetch strategies may be declared in the O/R mapping metadata, or overridden by a particular HQL or Criteria query.

What does NHibernate flush do?

An nHibernate session maintains all changes to the object model. At some point, it needs to synchronize these changes with the database.

How do I write a query in NHibernate?

Simple LINQ Queries are treated as NHibernate queries, but you have to connect them to repositories. Connect entities with Repository and IRepository to reduce its complexities. And it will be more structured. Let me know if I have taken you to right track or not.


1 Answers

I know I'm late to the party on this, but thought you may like to know this is now possible using HQL in NHibernate 2.1+

session.CreateQuery(@"update Users set Country = 'Antarctica'") .ExecuteUpdate(); 
like image 76
MPritchard Avatar answered Oct 03 '22 20:10

MPritchard