【问题标题】:n-tier and objects that are needed in every tier?n 层和每一层都需要的对象?
【发布时间】:2012-06-27 07:04:01
【问题描述】:

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

在最后一层(数据库层)中,我们有一个 POCO 类,它填充了来自数据库的数据。在顶层,我们有一个 MVC3 asp.net Web 应用程序。如果 MVC 应用程序可以读取 POCO 类,它会运行得最好。

但是由于GUI层不能直接访问数据库层,所以不能得到完全相同的类。

从最后一层到顶层获取 POCO 类的最佳方法是什么?

【问题讨论】:

  • 您是否调查过使用 DTO(数据传输对象),通常是 POCO,并在您的应用程序层(数据/域/服务到 UI)之间传输?请注意,您可以使用 AutoMapper 或 ValueInjector 之类的东西来进行对象到对象的映射。

标签: c# poco n-tier-architecture


【解决方案1】:

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

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

- Entities

- Data access layer
  + references Entities

- Business layer
  + references DAL
  + references Entities

- Presentation layer
  + references BL
  + references Entities

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

【讨论】:

  • 我喜欢这个解决方案,我也有类似的想法。现在让我们看看,如果我可以把它卖给其他人。 :)
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多