【问题标题】:How do I handle name conflicts mapping from business layer to presentation layer?如何处理从业务层到表示层的名称冲突映射?
【发布时间】:2012-10-15 04:49:03
【问题描述】:

在 N 层应用程序中,我的网站连接到 Web 引用以访问业务层逻辑并获取业务层 DTO。例如,BL 可能会为 Car 提供定义:

public class Car() {
    public string Make { get; set; }
    public string Model { get; set; }
    . . .
}

在我的 ASP.NET MVC 网站中,我需要创建自己的汽车模型对象。 (可能添加/删除字段或通过数据注释添加验证)。

由于我的命名空间中已经有一个名为 Car 的对象,因此我需要将模型对象命名为其他名称。不过,该对象确实没有更好的名称。有没有更简单的方法来处理这些名称冲突?或者,我可以完全限定模型,但这似乎并不理想。

另一种可能性,我可以使用 BL 中的对象,但扩展它以便我可以添加数据注释以进行验证?

【问题讨论】:

    标签: asp.net-mvc model naming-conventions 3-tier


    【解决方案1】:

    我看到人们在他们的 MVC 应用程序中处理这些类时只是将Model 附加到这些类。在您的情况下,该类将是 CarModel

    至于扩展对象,我不建议将业务层对象泄漏到表示层,因为如果数据发生变化,你以后会遇到麻烦。不必在使用数据的每个地方都更改表示代码,只需在从CarCarModel 的转换中更改它会更容易。

    【讨论】:

    • 我目前的解决方法就是这样,将Model 添加到 DL 对象中。问题是它在一定程度上降低了代码的可读性,而且考虑到应用程序 CarModel 的性质与汽车模型(即 Murcielago)模棱两可/混淆。
    • 您可以附加ViewModel,但这开始变得有点冗长。您的表示层中是否有大量复杂的代码?
    猜你喜欢
    • 1970-01-01
    • 2019-05-13
    • 2012-09-10
    • 1970-01-01
    • 2014-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-01
    相关资源
    最近更新 更多