C# のリポジトリ パターンを理解しています。一般的なリポジトリ パターンについて勉強するとき、私は混乱しています。その繰り返しが多いです。このパターンについて質問があります。
私はEntity Frameworkコードの最初のアプローチを使用しており、2つのモデルクラスがあります
学生
教師
たとえば、汎用インターフェイスが 1 つある場合、使用する汎用インターフェイスの数
public interface IRepository<TEntity>
{
IQueryable<TEntity> FindAll(Expression<Func<TEntity, bool>> where = null);
TEntity FindOne(Expression<Func<TEntity, bool>> where = null);
}
したがって、このインターフェイスは両方のモデル クラスで使用できます。Studentクラスにさらにメソッドがある場合、これらのメソッドを定義できますか? 例えば
public class StudentRepo<TEntity> : IRepository<TEntity> where TEntity : class
{
public virtual IQueryable<TEntity> FindAll(Expression<Func<TEntity, bool>> where = null)
{
return null != where ? Context.Set<TEntity>().Where(where) : Context.Set<TEntity>();
}
public virtual TEntity FindOne(Expression<Func<TEntity, bool>> where = null)
{
return FindAll(where).FirstOrDefault();
}
public void update()
{
}
public int FindId()
{
}
}
2 つの新しいメソッドupdate()
を追加しましたが、これらのメソッドFindId()
をStudentRepo
どこで定義できますか?
これら 2 つのメソッドを追加したい場合はIRepository
、Teacher クラスに対してこれらのメソッドを呼び出す必要があります。それの何の利益になるの?両方のクラスに別々のインターフェースを作成する場合、このアプローチはより良いですか? IStudent や ITeacher のように、使用したいメソッドを定義でき、不要なメソッドは使用されません。
親切に私を案内してください。私はとても混乱しています。