C# Lambda 表达式和 NHibernate

标签 c# nhibernate lambda

我是 NHibernate 伟大世界的新手。我使用的是 2.0.1.GA 版。这是我的问题。我有一个表 Cars,其中包含列 Manufacturer(nvarchar(50)) 和一个主键 ID(int)。我的 .NET 类是:

public class Car
{
    public virtual int ID { get; set; }
    public virtual string Manufacturer { get; set; }
}

现在,如果我想检索梅赛德斯制造的所有汽车,我必须输入:

using (var session = OpenSession())
{
    var cars = session
        .CreateCriteria(typeof(Car))
        .Add(Restrictions.Like("Manufacturer", "Mercedes"))
        .List();
    // ...
}

我不喜欢我需要将属性名称指定为字符串的事实:( 是否有可能有一些对重构更友好的东西(这只是一个建议)?

var ms = session
    .CreateCriteria<Car>()
    .Add(c => c.Manufacturer, Restrictions.Like("Mercedes")
    .List();

当前版本 (2.0.1.GA) 或 future 版本中是否有类似 thins 的内容?

最佳答案

正如 Google Ninja 所说,您可以使用 NHibernate.Linq 来完成。 查询将是:

session.Linq<Car>.Where(c => c.Manufacturer == "Mercedes").ToList()

如果有人最终来到这里并使用 NH3.0,则语法略有不同(感谢 Michael Mrozek 和 Mike 的建议):

session.Query<Car>.Where(c => c.Manufacturer == "Mercedes").ToList()

我使用了与 fluent-nhibernate 捆绑在一起的二进制文件适用于 2.0GA(我认为,不确定特定修订版)。

关于C# Lambda 表达式和 NHibernate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/341239/

相关文章:

c# - 将 C# lambda 函数转换为 VB.net

c++ - 在 C++ 中传递多个函数参数的最佳实践

c# - 如何将字符串转换为编码的url

c# - 如何配置 Fluent NHibernate 在使用 ReferencesAny 时返回 null 而不是丢失对象的代理

c# - 如何检查是否选中了 dataGridView 复选框?

nhibernate - 为什么 nhibernate 不附带像 UoW 这样的合适的 session 管理器?

c# - nHibernate,将两个属性映射到同一个类

python - 从字典列表中返回一个特定的字典

c# - 尝试使用 wpf 连接到扫描仪时出现错误代码

C#/Mono Console.In.ReadToEnd() 停止进程