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
}
}
假设我想要编写以下查询:
Where<Product>(t=>t.Version > new Version(1,2,0,0))
。在产品表中,我只存储Int64 NumVersion字段,因此将Version属性映射为组件,并且目前我像这样查询它:Where<Product>(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?