Web窗体中的存储库模式

时间:2013-05-10 12:35:21

标签: asp.net entity-framework architecture entity-framework-5

我已经按照以下方式在我的网络表单应用程序中使用了repo模式

UI图层:

它包含控件绑定的文件背后的代码以及插件更新等用户操作可以满足

UI Layer调用

存储库层:

它包含继承GenericRepo:IGeneric

的存储库类

数据层:

它包含EF生成的域类

层暂时严格,即UI层调用Repo层,然后轮流调用数据层来获取数据。

问题:

现在我面临的问题是,如果我需要Products.aspx页面上的产品列表,我需要做一些像

这样的事情
IProductRepo pr = new ProductRepo();

IList<Products> lstProducts = pr.GetAll();

我不想将数据层的引用添加到UI层,以便访问由EF生成的域实体

我的选择是什么?请引导我走正确的道路

问候。

1 个答案:

答案 0 :(得分:1)

在我看来,你错过了一层。我会像这样建造它:

UI                |
-----             |
**Domain**        |   Domain classes
-----             |
DAL (Repository)  |

这样,您的逻辑就位于一个单独的层中,您的DAL完全隐藏在您的逻辑和域模型之外。

解决此问题的另一种方法是使用依赖注入。这样您就可以定义一些接口并仅保留对接口的引用。使用依赖容器,您可以将这些引用绑定到实际类型。

我首选的DI容器例如是Ninject