ビジネス層、リポジトリ層、サービス層で構成される階層化された 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でクエリを実行する方法
私のような良い簡単な例と参考文献を教えてください。前もって感謝します。