2

ビジネス層、リポジトリ層、サービス層で構成される階層化された ASP.Net アプリケーションを作成しています。リポジトリ層では、EntityFramework を ORM として使用しています。サービス層では、クエリをラムダ形式 (OrderBy または OrderByDescending 、take、skip などを含む) でリポジトリ層に渡し、DbSet でクエリを実行して結果エンティティを返したいと考えています。


簡単に言えば: (asp.net c#で次のモックコードのようなことをする方法)

    public class Repository
    {
      public List<Book> findby(var query)
      {
        var dbcontext = DataContextFactory.GetDataContext();
        //The following line should do this :  dbcontext.Books.Where(B=>B.New==true && B.Id>99).OrderBy(B=>B.Date).ThenBy(B=>B.Id).Skip(2).Take(10);
        List<Book> matchedBooks = RunQueryOnBooks(dbcontext.Books,query); 
        return matchedBooks;
      }
    }

    public class Service
    {
      public List<Book> getTopNewBooks(Repository _repository)
      {
        var query = Where(B=>B.New==true && B.Id>99).OrderBy(B=>B.Date).ThenBy(B=>B.Id).Skip(2).Take(10);
        List<Book> matchedBooks = _repository.findby(query);
        return matchedBooks;
      }
    }

質問は次のとおりです。

  • クエリのvarの代わりにどのタイプを使用する必要がありますか (可能な場合)
  • dbcontext.Booksでクエリを実行する方法

私のような良い簡単な例と参考文献を教えてください。前もって感謝します。

4

4 に答える 4