私は次のものを持っています:
public partial class Subject
{
public Subject()
{
this.Contents = new List<Content>();
}
public int SubjectId { get; set; }
public string Name { get; set; }
public virtual ICollection<Content> Contents { get; set; }
}
public partial class Content
{
public int ContentId { get; set; }
public int ContentTypeId { get; set; }
public string Title { get; set; }
public string Text { get; set; }
public int SubjectId { get; set; }
public virtual Subject Subject { get; set; }
}
私の SQL Server データベースには、SubectId と ContentTypeId のコンテンツ テーブルにインデックスがあります。
私のクラスは、GetAll() や GetId(id) などのメソッドを持つ標準リポジトリで検索を行っていますが、リポジトリ モデルを使用すると、より複雑なクエリを実行できます。この場合、特定の SujectId と contentTypeId に対してクエリを実行したいと思います。私が避けたいのは、すべてのコンテンツ レコードを取得し、必要なものを除外するクエリを使用することです。SQL Server に正確に必要なものの実際のクエリを送信する方法が欲しいです。
現在、私の汎用リポジトリには次のものがあります。
public virtual T GetById(int id)
{
return DbSet.Find(id);
}
ContentRepository の作成を実装し、次のようなものを実装することで、必要なことを行うことができますか?
public IQuerable<Content> GetAllBySubjectId(int id)
{
return DbSet.Where(c => c.SubjectId == id);
}
その場合、GetAllBySubjectId を使用して、たとえば ContentId == "01" のチェックを追加するにはどうすればよいですか?