0

新しいアプリケーションを開発しようとしており、ベストプラクティスを検討しています

私はActiveRecordsについて読んだことがあり、以前にそれを使用したことがありますが、変更をより簡単に、より短時間で行えるものが常に必要です。

アクティブレコードと他のORMの使用:これらのメソッドは、1つか2つだけ必要な場合があるときに、データベースからすべてのレコードをロードすると思います。

ページングを実行する場合と同様に、pageIndexとpageSizeを渡す必要があります。すべてのデータをロードせずに、どのように実行しますか。

WHERE句に複数のフィールドが必要な場合のように、すべてのレコードをロードして、条件に基づいてフィルタリングしませんか

すべての選択/フィルタリング/並べ替えをデータベースレベルで実行したい

これらの操作を実行するために静的メソッドを追加すると、間違ったことをしているように見えます

それを優雅に処理するORMはありますか?

必要に応じて簡単に最適化できるように、アプリケーションフローを最大限に制御したいと考えています。

注:私はまだDAOやその他の方法を研究していますが、それでも使用したい場合に備えてActiveRecordについて意見を求めています。

ありがとう

4

1 に答える 1

1

C#3.5以降を使用している場合はLinqIQueryable適切なデータサービス層で問題を解決できると思います。

  1. ページング。IQueryableはデフォルトであり、toList()を呼び出すまでコミットしません。データストアにすべてのアイテムでIQueryableを返すようにすることができますが、最後にフィルタリングとページングを実行すると、必要なアイテムのみが処理されます。

例えば

var items = getAllItems(); // IQueyrable<Item>, from database

var paged = items.Skip(50).Take(10); // Database still not queried
paged.toList(); // Database return 10 items only
  1. フィルタリングとWHERE。同上

  2. ほとんどのORMはLinqで動作します。例:NHibernate

  3. アプリケーションフローを最大限に制御します。

    おそらく、独自のカスタムLinqプロバイダーを作成する必要がありますが、私を信じてください。そうする必要はありません。

于 2012-05-31T02:36:12.237 に答える