0

C# コードの機能を拡張する必要があります。私は C# は初めてですが、Java のバックグラウンドが豊富です。

私の仕事は、データベースからデータを取得するために、JDBC のような新しいクエリを作成することです。

以下の方法では、SQL クエリは表示されませんでした。

この行はどういう意味ですか? これは Hibernate hql に似ていますか?

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;

        }
4

3 に答える 3

1

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

すべてのオブジェクトの数を取得しているだけです。

これをリファクタリング

Session.Query<MyObject>().Count(). 読みやすく、この場合 LINQ は不要です。

于 2012-04-30T19:40:22.947 に答える
1

プロジェクトはNHibernateのようなORMを使用しているようです。ここで詳細を取得できます: http://nhibernate.info

于 2012-04-30T19:35:54.990 に答える
1

それはLinq構文です。.Net およびさまざまな .Net フレームワークに組み込まれた強力な形式のクエリ。
あなたの場合、NHibernate を使用しているようで、その行は NHibernate Linq を使用しています。(ただし、周囲のコードは Criteria を使用しています。)

NHibernate でクエリを作成するには、次を使用するオプションがあります。

  • リンク
  • HQL
  • 基準

どれも長所と短所が異なります。
どちらも NHibernate によって SQL に変換されます。実際の結果は、たとえば結果内のアイテムを読み取ったり、結果をリストに変換したりするなど、アクセスしようとするとフェッチされます。

于 2012-04-30T20:53:49.320 に答える