【问题标题】:Simple data manipulation: in Entity Model or Business layer?简单的数据操作:在实体模型或业务层?
【发布时间】:2016-10-19 10:20:00
【问题描述】:

我正在开发一个实现传统数据/业务/演示分层方法的 asp.net MVC 应用程序。

我的一个实体模型(代表一个人)包含地址/联系信息,包括“州”字段。我的数据源(我几乎无法控制)以全文形式提供状态值(例如:“California”与“CA”、“Florida”与“FL”等)。

我创建了一个静态帮助类,我们打算用它来将全文值转换为它们的缩写。

我的问题是,这个助手类应该在哪里引用,转换应该在哪里进行?

我看到以下选项:

  • 在模型中使用引用此静态类的访问器并在 get 上执行转换。大致如下:
public string State
    {
        get
        {
            return StateConverter.Abbreviate(_state);
        }
    }
  • 只要使用此实体模型,就在业务层执行转换

  • 只要显示此值,就在表示层执行转换

我喜欢在实际模型中执行此操作的简单性(通过 get 访问器),但这有点像业务逻辑。其他选项意味着我将不得不在许多地方进行转换(重复逻辑、遍历人员列表等)。

谢谢。

【问题讨论】:

    标签: c# asp.net-mvc model-view-controller entity-model business-layer


    【解决方案1】:

    可以将其放入模型中,因为它只是一个计算域。此外,您的 Abbreviate(...) 方法甚至不依赖于模型之外的任何数据。你有权把它放在那里。

    【讨论】:

    • 这是有道理的。这就引出了另一个问题。现在,我在我的整体解决方案中拥有自己项目中的所有模型。我还有另一个专门用于框架/帮助类的项目。我的 EntityModel 项目中没有其他外部引用。添加对我的帮助项目的引用是否可以接受?
    • 这是可以接受的,因为您的助手/基础设施层处理横切关注点。您可以在应用的任何层级中引用它。
    猜你喜欢
    • 1970-01-01
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    • 2013-10-03
    • 2014-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多