https://github.com/nhibernate/nhibernate-core/pull/391
2014-12-19 17:46 GMT+01:00 Patrick Earl <hyn...@gmail.com>: > In our shop we use interfaces for entities exclusively since we have a > system that allows for complex inheritance. It would be sad to not have > support for interfaces or limited constructor scenarios. > > What's at the heart the statement that executes? If it's just a matter of > setting individual columns perhaps the syntax should reflect that more than > pretending like your C# constructor code is going to be called. Doing it on > individual properties allows for interfaces, doesn't incorrectly imply that > C# code is going to run on insert, and doesn't require the availability of > an empty public constructor on a concrete type. > > Patrick Earl > On Dec 18, 2014 6:02 PM, "Gunnar Liljas" <gunnar.lil...@gmail.com> wrote: > >> Yes... >> >> session.Query<Animal>() >> .Where(x=>x.Age>3) >> .Update(x => new Animal { >> Name = "Peter", >> Age = x.Age+1, >> }); >> >> would work! Didn't think of that. >> >> I'm not completely sold on the "new Animal" part in an update. It looks >> linguistically wrong. But it's certainly less verbose. The same problems as >> for the Insert also applies. >> >> /G >> >> >> 2014-12-19 1:54 GMT+01:00 Alexander Zaytsev <haz...@gmail.com>: >>> >>> What about this: >>> >>> session.Query<Animal>() >>> .Where(x=>x.Age>3) >>> .Update(x => new Animal { >>> y.Name = "Peter", >>> y.Age = y.Age+1, >>> }); >>> >>> ? >>> >>> On Fri, Dec 19, 2014 at 1:28 PM, Gunnar Liljas <gunnar.lil...@gmail.com> >>> wrote: >>>> >>>> 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 <crai...@gmail.com>: >>>>> >>>>> 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 <haz...@gmail.com> >>>>> 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 <rjpe...@gmail.com> >>>>>> 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 nhibernate-development+unsubscr...@googlegroups.com >>>>>>> . >>>>>>> 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 nhibernate-development+unsubscr...@googlegroups.com. >>>>>> 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 nhibernate-development+unsubscr...@googlegroups.com. >>>>> 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 nhibernate-development+unsubscr...@googlegroups.com. >>>> 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 nhibernate-development+unsubscr...@googlegroups.com. >>> 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 nhibernate-development+unsubscr...@googlegroups.com. >> 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 nhibernate-development+unsubscr...@googlegroups.com. > 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 nhibernate-development+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.