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.