Can you show an operator (with generated SQL) that was correct in 2.1 and
wrong in 4.0?

/Oskar

2016-04-18 11:06 GMT+01:00 Erik H <erikholman...@gmail.com>:

> Thanks for the quick reply!
>
> Good spot regarding > operator, but there are several operators
> implemented, I didn't put them all in this post. Implemented operators:
> ==, !=, >, >=, <, <=, +, -
>
> Are there any options you see that I can do to get it back working?
>
>
> On Monday, April 18, 2016 at 11:55:29 AM UTC+2, Oskar Berggren wrote:
>>
>> I don't think these operators have ever been supported on multi-column
>> user types. Note that the behaviour you show for 2.1.2.400 also doesn't
>> match the implementation in your operator>().
>>
>> /Oskar
>>
>> 2016-04-18 7:56 GMT+01:00 Erik H <erikho...@gmail.com>:
>>
>>> I've got an struct that implements some operators.
>>>
>>>     public struct YearAndMonth{
>>>>         private int _month;
>>>>         /// <summary>
>>>>         /// Month, between 1 and 12.
>>>>         /// </summary>
>>>>         public int Month
>>>>         {
>>>>             get
>>>>             {
>>>>                 if (_month == 0)
>>>>                 {
>>>>                     _month = 1;
>>>>                 }
>>>>                 return _month;
>>>>             }
>>>>             private set // for NHibernate
>>>>             {
>>>>                 if (value < 1 || value > 12)
>>>>                 {
>>>>                     throw new ArgumentOutOfRangeException("value");
>>>>                 }
>>>>                 _month = value;
>>>>             }
>>>>         }
>>>>         private int _year;
>>>>         /// <summary>
>>>>         /// Year, between 1 and 9999.
>>>>         /// </summary>
>>>>         public int Year
>>>>         {
>>>>             get
>>>>             {
>>>>                 if (_year == 0)
>>>>                 {
>>>>                     _year = 1;
>>>>                 }
>>>>                 return _year;
>>>>             }
>>>>             private set // for NHibernate
>>>>             {
>>>>                 if (value < 1 || value > 9999)
>>>>                 {
>>>>                     throw new ArgumentOutOfRangeException("value");
>>>>                 }
>>>>                 _year = value;
>>>>             }
>>>>         }
>>>>
>>>         // This is just one of the operators, others are implemented
>>>> too!!
>>>
>>>         public static bool operator >(YearAndMonth obj1, YearAndMonth
>>>> obj2)
>>>>         {
>>>>             if (obj1.Year == obj2.Year )
>>>>             {
>>>>                 return (obj1.Month > obj2.Month);
>>>>             }
>>>>             return (obj1.Year > obj2.Year);
>>>>         }
>>>>     }
>>>
>>>
>>> My class looks a bit like this:
>>>
>>>     class MyObj {
>>>>        public YearAndMonth Period {get; set;}
>>>>     }
>>>
>>>
>>> I've got a where statement like this:
>>>
>>>     .Where(_ => _.Period >= startPeriod && _.Period <= endPeriod)
>>>
>>>
>>> When NHibernate translates the where statement it generates strange SQL
>>> and throws a GenericADOException:
>>>
>>>     WHERE           (
>>>>                                 myobj0_.periodmonth ge @p0
>>>>                 AND             myobj0_.periodyear ge @p1)
>>>>     AND             (
>>>>                                 myobj0_.periodmonth le @p2
>>>>                 AND             myobj0_.periodyear le @p3)
>>>
>>>
>>> How can I get my where statement working without modifying the Linq
>>> statements? I've upgraded NHibernate from version 2.1.2.400 to 4.0.4.400
>>>
>>>
>>> Where statement that is produced by NHibernate 2.1.2.400 with 
>>> NHibernate.Linq
>>> 1.1.0.1001:
>>>
>>>>
>>>>     WHERE           (
>>>>                                                 this_.periodmonth  >=
>>>> @p0
>>>>                                 AND             this_.periodyear >= @p1
>>>>                                 AND             this_.periodmonth <=
>>>> @p2
>>>>                                 AND             this_.periodyear <= @p3)
>>>
>>>
>>> The configured dialect is NHibernate.Dialect.MsSql2008Dialect and
>>> driver_class is NHibernate.Driver.SqlClientDriver.
>>>
>>> How can I make NHibernate generate the 'old' >= and <= ??
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "nhusers" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to nhusers+u...@googlegroups.com.
>>> To post to this group, send email to nhu...@googlegroups.com.
>>> Visit this group at https://groups.google.com/group/nhusers.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>> --
> You received this message because you are subscribed to the Google Groups
> "nhusers" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to nhusers+unsubscr...@googlegroups.com.
> To post to this group, send email to nhusers@googlegroups.com.
> Visit this group at https://groups.google.com/group/nhusers.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to nhusers+unsubscr...@googlegroups.com.
To post to this group, send email to nhusers@googlegroups.com.
Visit this group at https://groups.google.com/group/nhusers.
For more options, visit https://groups.google.com/d/optout.

Reply via email to