NHibernate и перегрузка оператора

public class Version
{
    public byte Major { get; set; }
    public byte Minor { get; set; }
    public short Build { get; set; }
    public int Revision { get; set; }

    private long NumVersion
    {
        //get {}
        //set {}
        //Some logic that make Int64 number that represents this verion
    }
}

Предположим, я хочу иметь возможность писать запросы вроде

Где (t => t.Version> new Version (1,2,0,0))

В таблице продукта я храню только поле Int64 NumVersion, поэтому свойство Version отображается как компонент, и в настоящее время я запрашиваю его как , где (t => t.Version.NumVersion> new Version (1,2,0, 0) .NumVersion)

В C # я могу 1. Перегрузить операторы сравнения, 2. Сделать неявное приведение к long, например:

public static implicit operator long(Version v)
{
    return v.NumVersion;
}

Это позволит мне сравнивать объекты версии, но как заставить NHibernate понять это и правильно сгенерировать SQL?

9
задан Alex Burtsev 22 July 2011 в 11:00
поделиться