私は、インターネット ユーザーにいくつかのサービスを提供するインターネット Web サイトに取り組んでいます。そこで、ビジネス チームの協力者が必要な情報を取得できる管理システムを用意しました。たとえば、過去 3 日間に登録された新規ユーザーは何人ですか? このように、管理システムには、いくつかのテーブルを条件で検索するためのページがいくつかあります。これらのページはよく似ています:
ユーザーID:[--------------] ニックネーム:[------------] 登録時間:[BEGIN]~[END] [検索]
検索結果はこちら
このクラスUser
には、UserID/Nick/RegisterTime (およびユーザー テーブル) 以外にも多くのプロパティがありますが、条件として扱われるのは 3 つのプロパティだけです。だから私は次のUserSearchCriteria
ようなクラスを持っています:
public class UserSearchCriteria
{
public long UserID { get; set; }
public string NickKeyword { get; set; }
public DateTime RegisteredTimeStart { get; set; }
public DateTime RegisteredTimeEnd { get; set; }
}
次に、データ アクセス レイヤーで、 search メソッドが type の引数を受け取り、UserSearchCriteria
対応Expression<Func<User, bool>>
するクエリを作成します。DAL の外にいる間、他の開発者は、基準によって提供される 3 つの条件でのみユーザー テーブルを検索できます。たとえば、City
プロパティが "New York" であるユーザーを検索することはできません (これは通常、このプロパティにインデックスがないためです)。 DB、それでの検索は遅いです)。
質問 1:検索を囲むこの実装は正しいですか? 助言がありますか?
質問 2:ArticleSearchCriteria
などのプロジェクトでより多くの基準クラスが見つかりFavouriteSearchCriteria
、基準は今後ますます増えると思います。それらはほぼ同じ動作メカニズムを持っていますが、コードを繰り返す必要があります。より良い解決策はありますか?
PSこれらの情報が必要な場合: jQuery + ASP.NET MVC 3 + MongoDB