私の助言は、基本的な方法(Find
、Save
、Delete
など)を持つGenericRepository<T>
を作成することです。
例:
public abstract class GenericRepository<T> : IRepository<T> where T : class
{
public T FindSingle(Expression<Func<T,bool>> predicate) { .. };
public IQueryable<T> Find() { .. };
public void Delete(T entity) { .. };
}
はその後、特殊なメソッドを作成するために、一般的なものから継承する特定のリポジトリを作成します。
例:
public class EmployeeRepository : GenericRepository<Employee>, IRepository<Employee>
{
public Employee FindByLastName(string lastName)
{
return FindSingle(emp => emp.LastName == lastName);
}
public ICollection<Employee> FindAllManagers()
{
return Find().Where(emp => emp.Type == "Manager").ToList();
}
// other methods...
}
は、あなたがあなたのリポジトリ全体で共通のコードを複製していないことを意味します。
はい、もう1つの方法は、GenericRepository<T>
で機能するサービスを利用することです。これは、サービスが(本質的に)専門のリポジトリであることを意味します。
サービスレイヤーや専用リポジトリーが必要な場合は、これが重要です。
こんにちは...私はあなたについてのいくつかの考えを持っているでしょう!ありがとう!! – AndreMiranda