【问题标题】:Structure for switchable Data Access Layer可切换数据访问层的结构
【发布时间】:2012-10-24 16:31:35
【问题描述】:
我需要使用实体框架编写数据访问层。要求之一是允许配置文件控制数据的来源。使用一个配置设置,它应该来自数据库;与另一个,来自网络服务。
现在,我最初的想法是拥有 3 个 DataAccess 类:
- 小部件数据访问
- WidgetDatabaseDataAccess
- WidgetWebServiceDataAccess
它们都将实现相同的接口。 WidgetDataAccess 将读取配置并委托给正确的子类。这似乎是明智的,对吧?
有什么我应该遵循的模式,或者任何有更好的方法来构建它的人吗?
【问题讨论】:
标签:
c#
asp.net-mvc
entity-framework
design-patterns
【解决方案1】:
是的,存储库/UnitOfWork 模式。
-
Widget.Core:您的 MVC 应用程序仅使用 Widget.DAL 命名空间,依赖项根据您的配置文件注入 Widget.DAL.DatabaseService 或 Widget.DAL.WebService
-
Widget.DAL:IRepository、IUnitOfWork、IWhateverYouNeed、DTO
-
Widget.DAL.DatabaseService:实体框架模型和上下文。使用实体框架上下文实现 Widget.DAL 接口
-
Widget.DAL.WebService:Web 客户端、域对象、使用 Web 客户端的 Widget.DAL 接口实现