实体框架,IRepository和UnitOfWork。你如何实施DAL?

时间:2016-11-11 11:01:26

标签: c# .net entity-framework orm data-access-layer

EF的

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?

1 个答案:

答案 0 :(得分:3)

你在那里有什么不对。

我唯一需要做的就是为我的存储库创建一个单独的工厂,它是DataService类的一部分。 DataService类将传递存储库实例