c# - NHibernate 和运算符重载

标签 c# 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
    }
}

假设我希望能够编写如下查询

Where<Product>(t=>t.Version > new Version(1,2,0,0))

在 Product 表中,我只存储了 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;
}

这将允许我比较 Version 对象,但是如何让 NHibernate 理解它并生成正确的 SQL?

最佳答案

这是不可能的。您将不得不为每个 Version 组件显式编写比较,或者在客户端进行过滤。

关于c# - NHibernate 和运算符重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6789030/

相关文章:

c# - 如何在 WPF 中进行随机化

c# - 服务器在写入响应 header 后关闭连接时出现 HttpClient 异常

c# - 如何实现 Azure 表存储以允许单元测试

linq - Linq到NHibernate项目状态?有贡献吗?铅?

c# - 使用 Moq 的单元测试未通过,对象为空,我错过了什么吗?

c# - 在 C# 中实现幻像类型

c# - 使用辅助 UI 消息泵作为启动屏幕时出现异常

NHibernate 忽略长度属性

.net - Fluent NHibernate - 仅当不存在时才创建数据库模式

NHibernate iStatelessSession 在急切获取时返回重复的父实例