gpt4 book ai didi

linq - NHibernate.LINQ 支持的运算符

转载 作者:行者123 更新时间:2023-12-04 00:29:24 25 4
gpt4 key购买 nike

我试图在没有实际编写任何代码的情况下评估 NHibernate.LINQ 1.0。 Ayende 承认 this version of LINQ support is subpar compared to EF ,但在我的一生中,我似乎找不到一个页面来解释此实现中支持和不支持的内容。例如,我可以使用 Skip & Take ?我不能使用什么?

最佳答案

您可以查看 LINQ for NHibernate示例以查看 Ayende 本人对已实现的内容和不适合此提供程序的内容进行的测试。

其中一些普遍支持:

  • 匿名类型创建。 new { Person = x.Name }
  • 第一个()。 query.First()
  • 首先或默认()。 query.FirstOrDefault()
  • 单()。 query.Single()
  • 单或默认()。 query.SingleOrDefault()
  • 聚合()。 query.Aggregate((x1,x2) => x1)

  • Contains(). query.Where(x => x.Name.Contains("Foo"))
  • 开始于()。
  • 结束于()。
  • 子串()。 where db.Methods.Substring(e.FirstName, 1, 2) == "An"
  • 子查询。 query.Where(x => x.Company.Id == 4)
  • 计数()。 query.Where(x => x.Relatives.Count > 0)
  • 任何()。 query.Any()
  • 取()。 query.Take(10)
  • 跳过()。 query.Take(10).Skip(4)
  • 订单()。 orderby x.Name descending
  • 替换()。 AfterMethod = e.FirstName.Replace("An", "Zan"),
  • 字符索引()。 where db.Methods.CharIndex(e.FirstName, 'A') == 1
  • 索引()。 where e.FirstName.IndexOf("An") == 1


  • Problematic:




    • Group by

    • Joins



    One of my own examples:



    query = NSession.Session.Linq<Catalog>()
    .Where(acc => acc.Company.Status == "A")
    .Where(acc => acc.Id.StartsWith("12-536"))
    .Where(acc => acc.Id.EndsWith("92") || acc.Id.EndsWith("67"))
    .Take(10).OrderBy(acc => acc.Title);

    如果您的生产应用程序像我一样使用最新的稳定版本 2.1.2.4,那么在 NHibernate 3.0(主干)获得稳定版本并且我们觉得可以安全地使用它之前,您会坚持使用 NHibernate.Linq 提供程序给我们的东西在主要应用上。在那之前,我对 NHibernate.Linq 和 HQL 的混合感到非常满意。

    关于linq - NHibernate.LINQ 支持的运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3781056/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com