【问题标题】:ASP.Net MVC How to separate view models from DB models?ASP.Net MVC 如何将视图模型与数据库模型分开?
【发布时间】:2011-07-12 22:47:34
【问题描述】:

我不能完全决定如何将我的视图模型与我的数据库模型分开。

我正在使用 ActiveRecord 模式进行数据库访问。这意味着我为数据库中的每个 User 行获取了一个 User 类实例。

在 WebForms 中,我习惯将这些用作模型对象,直接在我的 ActiveRecords 上实现大部分业务逻辑。

我意识到这并不完全是 3 层设计,我真的很想改进它,尤其是在 MVC 中,关注点分离是有同理心的。

所以我认为控制器不应该访问我的数据库模型,但是我该如何从数据库中存储/加载数据?

我也不认为应该在视图模型中放置大量业务逻辑,所以不知何故,我认为我错过了难题的核心部分。

我正在寻找的是一些我猜想的最佳实践建议 :-)

我希望这一切都有意义,否则请询问。

【问题讨论】:

    标签: model-view-controller separation-of-concerns


    【解决方案1】:

    我强烈建议为每个视图创建一个视图模型,并使用AutoMapper 将属性从您的活动记录映射到您的视图模型。我不认为您的控制器可以访问您的数据库模型存在问题;控制器应该负责将它们转换为视图模型。

    至于将视图模型(真正的发布数据模型)转换回活动记录,您也可以在简单的情况下使用 AutoMapper,在其余情况下使用自定义代码。

    【讨论】:

      猜你喜欢
      • 2014-01-07
      • 2012-06-11
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 2012-02-02
      • 1970-01-01
      • 2010-11-18
      相关资源
      最近更新 更多