就应用程序层而言,我很难弄清楚如何放置实体框架DbContext
。在我看来,它旨在替换存储库层,但另一方面,它实际上并不像更基本的存储库那样工作,后者是通过接口实现的,因此以后可以轻松交换。
因此,我在 service 和存储库层(例如this post)上找到了很多不错的帖子,但似乎无法回答实体的位置框架适合这种模式。
我应该在实体框架之上添加存储库层还是在服务中使用DbContext
代替存储库?
答案 0 :(得分:2)
您需要问自己为什么要抽象化数据访问层。
答案通常是:
许多人认为第二个参数完全是错误的,因为:
总而言之,我倾向于同意 testability 应该是您的主要关注点,对于EntityFramework,您可以:
DbSet
(通过将它们标记为virtual
)。然后,回答您的问题标题:是的。 DbContext
已经充当存储库。
答案 1 :(得分:1)
EF不是一层,它是一种数据访问技术。
EF调用应该写在存储库中,该存储库是对服务层的抽象,因此服务层不必关心数据是存储在数据库中还是其他地方。