Absolutely possible, but the (big) difference is that 1. An anonymous object will lose the static type relationship with what you're updating/inserting, which kind of defeats the point of Linq bulk operations. 2. You will lose the possibility to express anything but simple value expressions, i.e "SET FullName = FirstName + ' ' + LastName" ( Set(x=>x.FullName,x=>x.FirstName + " " + x.LastName), will not be possible.
/G 2014-12-19 1:20 GMT+01:00 Craig van Nieuwkerk <[email protected]>: > > Looks nice. But yes, I think if you can have anonymous object for the > parameters this would be better. I have used FluentMigrator and it does > this for Update/Insert pretty nicely. > > On Fri, Dec 19, 2014 at 11:13 AM, Alexander Zaytsev <[email protected]> > wrote: >> >> Very nice. I would like to remove word "All" from the operations.Also why >> do we need "Set" in update statement? >> >> On Fri, Dec 19, 2014 at 1:04 PM, Ricardo Peres <[email protected]> wrote: >>> >>> Very nice! I implemented strongly typed delete in NH-3488 >>> <https://nhibernate.jira.com/browse/NH-3488>, but the syntax was a bit >>> different: >>> >>> session.Delete<Product>(x => x.Price > 100); >>> >>> Do you have a pull request waiting to be issued? >>> >>> RP >>> >>> >>> On Thursday, December 18, 2014 11:21:06 PM UTC, Gunnar Liljas wrote: >>>> >>>> So, now I have completed and old abandoned NH project, to create a Linq >>>> implementation of the bulk functionality. It's complete in the sense that >>>> all the unit tests from the HQL implementation passes with the Linq >>>> implementation as well, plus a couple more. Before I clean things up, I'd >>>> like you input on the syntax. >>>> >>>> Currently it works like this: >>>> >>>> Delete >>>> >>>> session.Query<Animal>() >>>> .Where(x=>x.Age>3) >>>> .DeleteAll(); >>>> >>>> //all methods returns int (affected rows) >>>> >>>> Update >>>> >>>> session.Query<Animal>() >>>> .Where(x=>x.Age>3) >>>> .UpdateAll(x=>x >>>> .Set(y=>y.Name,"Peter") >>>> .Set(y=>y.Age,y=>y.Age+1) >>>> ) >>>> >>>> Insert (i.e INSERT SELECT) >>>> >>>> session.Query<Animal>() >>>> .Where(x=>x.Age>3) >>>> .InsertInto(x=>new Human{ >>>> Name=x.Name, >>>> Age=x.Name+10 >>>> }) >>>> >>>> >>>> The Delete method was first implemented as >>>> session.Delete<Animal>(x=>x.Age>3), >>>> but I added the IQueryable<T>.DeleteAll extension for consistency. >>>> >>>> I welcome any ideas on how this can be improved/changed. >>>> >>>> /G >>>> >>> -- >>> >>> --- >>> You received this message because you are subscribed to the Google >>> Groups "nhibernate-development" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> For more options, visit https://groups.google.com/d/optout. >>> >> -- >> >> --- >> You received this message because you are subscribed to the Google Groups >> "nhibernate-development" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> For more options, visit https://groups.google.com/d/optout. >> > -- > > --- > You received this message because you are subscribed to the Google Groups > "nhibernate-development" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- --- You received this message because you are subscribed to the Google Groups "nhibernate-development" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
