C# 从数据库获取数据

本文关键字:数据 获取 数据库 | 更新日期: 2023-09-27 18:32:40

我需要增强C#代码的功能。我是C#的新手,但我有很强的Java背景。

我的工作是编写一个新查询,如 JDBC,以从数据库中获取数据。

在下面的方法中,我没有看到任何SQL查询。

这句话是什么意思?这和HibernateHQL相似吗?

from p in Session.Query<MyObject>() select p

谢谢

法典:

 public IPagingList<MyObject> ReadMyObjectItems(int start, int limit, IList<Filter> filters)
        {
            var criteria = Session.CreateCriteria<MyObject>();
            if (limit != -1)
            {
                criteria.SetMaxResults(limit);
                criteria.SetFirstResult(start);
            }
            if (filters != null)
            {
                foreach (var filter in filters)
                {
                    criteria.Add(Restrictions.InsensitiveLike(filter.Field, "%" + filter.Value + "%"));
                }
            }
            IList<MyObject> report = criteria.List<MyObject>();
            int total = (from p in Session.Query<MyObject>() select p).Count();
            var pagedResults = new PagingList<MyObject> { List = report, Total = total };
            return pagedResults;
        }

C# 从数据库获取数据

(from p in Session.Query<MyObject>() select p).Count();

我们只是得到所有对象的计数。

将其重构为

Session.Query<MyObject>().Count() . 它更易于阅读,在这种情况下,不需要 LINQ。

这是Linq语法。一种强大的查询形式,并入 .Net 和不同的 .Net 框架中。
在您的情况下,您似乎正在使用NHibernate,而该行正在使用NHibernateLinq。(但周围的代码使用的是条件。

要在 NHibernate 中撰写查询,您可以选择使用

  • 林克
  • 总部
  • 标准

它们都有不同的优缺点。
两者都将由NHibernate翻译成SQL。当您尝试访问它时,将获取实际结果,例如读取结果中的项目或将结果转换为列表等。

似乎该项目正在使用像NHibernate这样的ORM。您可以在此处获取更多详细信息:http://nhibernate.info