每层需要的n层和对象?

时间:2012-06-27 07:04:01

标签: c# poco n-tier-architecture

我们有一个经典的3层架构应用程序。现在我们面临一个小问题,我们不知道处理它的最佳方法。

在最后一层(数据库层),我们有一个POCO类,它从数据库中填充数据。在顶层,我们有一个MVC3 asp.net Web应用程序。如果MVC应用程序只能读取POCO级别,那么它将最有效。

但由于GUI层无法直接访问数据库层,因此无法获得完全相同的类。

从最后一层到顶层的POCO级别的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

实际问题是不应在数据层中定义您的实体。数据层以及应用中的任何其他图层可能会在某一天完全重写,并且您不希望实体本身与这些图层中的任何一个绑定。

换句话说,在单独的项目中定义您的实体,然后从所有其他项目中引用它:

- Entities

- Data access layer
  + references Entities

- Business layer
  + references DAL
  + references Entities

- Presentation layer
  + references BL
  + references Entities

存储库接口也是如此:如果使用存储库模式来抽象数据访问,Entities项目应包含所有存储库接口,然后可以通过特定的DAL选项实现。

答案 1 :(得分:1)

您可以创建从所有不同图层项目引用的DTO项目。这样,您就可以在应用程序的所有层之间共享DTO POCO。