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.

Reply via email to