Canonical implementation of Repository看起来像:
public interface IStudentRepository : IDisposable
{
IEnumerable<Student> GetStudents();
Student GetStudentByID(int studentId);
void InsertStudent(Student student);
void DeleteStudent(int studentID);
void UpdateStudent(Student student);
void Save();
}
在这里,我看到了IRepository,UnitOWork的混合。
但福勒说存储库是collection-like interface for accessing domain objects。据此,Update,Delete和Insert方法应该移动到另一个类。以及Save应该移动到实现IUnitOfWork的类。
在我目前的项目中,我们实施IRepository作为官方文档说。它可以在将来引起问题吗?一种解决方案是实施CQRS,可能采用事件源,但需要时间和资源。那么,您如何在项目中实施DAL?
答案 0 :(得分:3)
你在那里有什么不对。
我唯一需要做的就是为我的存储库创建一个单独的工厂,它是DataService类的一部分。 DataService类将传递存储库实例