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 [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/nhusers.
For more options, visit https://groups.google.com/d/optout.