我们有一个经典的3层架构应用程序。现在我们面临一个小问题,我们不知道处理它的最佳方法。
在最后一层(数据库层),我们有一个POCO类,它从数据库中填充数据。在顶层,我们有一个MVC3 asp.net Web应用程序。如果MVC应用程序只能读取POCO级别,那么它将最有效。
但由于GUI层无法直接访问数据库层,因此无法获得完全相同的类。
从最后一层到顶层的POCO级别的最佳方法是什么?
答案 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。