我们有一个经典的 3 层架构应用程序。现在我们面临一个小问题,我们不知道处理它的最佳方法。
在最后一层(数据库层)中,我们有一个 POCO 类,它填充了来自数据库的数据。在顶层,我们有一个 MVC3 asp.net Web 应用程序。如果 MVC 应用程序可以读取 POCO 类,它会运行得最好。
但是由于 GUI 层不能直接访问数据库层,所以它不能得到完全相同的类。
从最后一层到顶层获得 POCO 类的最佳方法是什么?
我们有一个经典的 3 层架构应用程序。现在我们面临一个小问题,我们不知道处理它的最佳方法。
在最后一层(数据库层)中,我们有一个 POCO 类,它填充了来自数据库的数据。在顶层,我们有一个 MVC3 asp.net Web 应用程序。如果 MVC 应用程序可以读取 POCO 类,它会运行得最好。
但是由于 GUI 层不能直接访问数据库层,所以它不能得到完全相同的类。
从最后一层到顶层获得 POCO 类的最佳方法是什么?
实际问题是您的实体不应在数据层中定义。数据层,以及应用程序中的任何其他层,有一天可能会被完全重写,并且您不希望实体本身与这些层中的任何层相关联。
换句话说,在一个单独的项目中定义您的实体,然后从所有其他项目中引用它:
- Entities
- Data access layer
+ references Entities
- Business layer
+ references DAL
+ references Entities
- Presentation layer
+ references BL
+ references Entities
存储库接口也是如此:如果您使用存储库模式来抽象您的数据访问,Entities
则项目应该包含所有存储库接口,然后可以通过特定的 DAL 选择来实现。
您可以创建从所有不同层项目引用的 DTO 项目。通过这种方式,您可以在应用程序的所有层之间共享 DTO POCO。