but make it returns 0 and not throwing exception is not "surprise" right? but the exception is "surprise". If in EF user use the same workaround, when he turn to NH, that workaroud is still working, so it doesn't break anything, so there's no "surprise". 2014-3-31 下午9:56于 "Stephen Bohlen" <[email protected]>写道:
> I don't think its technically 'broken'. As you can see from the comments > in the JIRA issue, the final design decision was to mimic the behavior of > sim. LINQ statements in other ORMs in the .NET space for the sake of > consistency and so as not to violate "the principle of least-surprise". > > If that behavior isn't what you seek for your use-case, then you are > certainly free to apply the work-arounds discussed. If you don't like the > "ugly" syntax this produces in your code, then I recommend you create an > extension method of your own ( perhaps "IEnumerable.NullSafeSum(...)" ?) > and invoke that instead. > > Cheers, > > Steve Bohlen > [email protected] > http://blog.unhandled-exceptions.com > http://twitter.com/sbohlen > > > On Mon, Mar 31, 2014 at 1:03 AM, Mouhong Lin <[email protected]> wrote: > >> I already know that workaround before I created this post. >> I mean why this is treat as "by design" behavior and not plan to fix it. >> That's why I posted it here instead of the nhusers groupd. >> >> >> On Monday, March 31, 2014 4:14:16 AM UTC+8, Ricardo Peres wrote: >>> >>> var total = query.Sum(x => (double?) x.Income); >>> >>> Replace double for single, int, long, etc. >>> >>> By the way, the proper place to ask questions is the nhusers mailing >>> list, not this one. >>> >>> RP >>> >>> On Sunday, March 30, 2014 4:42:24 PM UTC+1, Mouhong Lin wrote: >>>> >>>> Hi guys, >>>> >>>> I get an exception saying "Value cannot be null" when i execute this >>>> query (NH 3.3.3): >>>> >>>> var total = query.Sum(x => x.Income); >>>> >>>> The exception happens when the query returns no result. >>>> I found there's already a Jira issue about this: >>>> https://nhibernate.jira.com/browse/NH-3113 >>>> >>>> But why won't fix? It's really not usable if this query throws >>>> exception. In every application that need to do reporting will encounter >>>> this. >>>> And this violate the semantic of the sum and linq to objects, right? >>>> If this should throw exception, why query.Count() don't throws? >>>> (I understand the technical reason of this, just saying why the >>>> semantic of these are not consistent) >>>> >>>> If L2S or EF behaves the same, I think it's their bug. Not because it's >>>> a good thing. >>>> Workaounds like this "var sum = myQuery.Sum(x => (int?)x.Prop) ?? 0" make >>>> my code really ugly. >>>> >>>> Ideas? >>>> >>>> >>>> >>>> ------------------------------ >>>> Mouhong >>>> >>>> -- >> >> --- >> 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 a topic in the > Google Groups "nhibernate-development" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/nhibernate-development/o5orsYz7Ums/unsubscribe > . > To unsubscribe from this group and all its topics, 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.
