私のMVCサイトで教師ログインし、彼のクラスとそのクラスで使用されているすべての本を表示する必要があります。IIdentityを使用したMVCフィルタデータベース
教師は、他の誰かがクラスやブックを見ることができないようにすべきです。
は、ここで私はUnitOfWorkのでRepositoryPatternを使用し、私のモデル
public class Teacher
{
public int Id { get; set; }
public string Name {get; set;}
}
public class Books
{
public int Id {get; set;}
public string Title {get; set;}
public int CourseId {get; set;}
}
public class Course
{
public int Id {get; set;}
public int Name {get; set;}
public int TeacherId {get; set;}
}
です。
すべてのクラスが、私は私のコントローラでのラインのこの種を置くべきshowned戸部得るために:私はcurrentTeacherのすべてのクラスをチェックする必要があるため
var classes = classRepository.All.Where(x => x.TeacherId == currentTeacher.Id)
物事はBookControlerで最悪取得します:
var classes = classRepository.All.Where(x => x.TeacherId == currentTeacher.Id)
var books = bookRepository.All.Where(x => classes.Contains(y => y.Id == x.CourseId)
このようなアプローチは、機能的なバグにつながる可能性があります。
var classes = classRepository.All; // Already filtered on currentTeacher
または
var books = bookRepository.All; // Already filtered on currentTeacher
を:私がやりたいものを は先生が順番に私のリポジトリの自動フィルタをログインしたときので、私のコントローラで私が持っているだろう、currentTeacherについてのみ件のデータを維持するということです
これは可能ですか?そしてどうやって?
残念ながら、これは私のクラスで動作しません。救急隊 – user1012750
何故ですか? – SilverlightFox
申し訳ありません...私はclassRepositoryにチェックインする必要のあるBookリポジトリを意味しました。この場合、IIdentityでは不十分です。 私の本当の疑問は、教師をばらばらにしてデータベースをフィルタリングする方法はありますか?基本的にフィルタリングされたデータベースには、特定の教師に関連するデータのみが含まれます。 – user1012750