【问题标题】:How to create persistence , domain and view models如何创建持久性、域和视图模型
【发布时间】:2015-02-19 01:32:56
【问题描述】:

我已经阅读了很多关于将图层分开的重要性,并且这些概念令人兴奋:)。但是,我查看了很多地方,找到了如何区分这三种模型的实际示例,但没有运气。在实际情况下如何将它们连接在一起?这是我的几个问题

  1. 我的理解是,持久化模型包含我们用来创建实体的 POCO,域模型包含业务逻辑,视图模型用于公开相关数据。我说的对吗?
  2. 如果我是正确的,我如何在一个解决方案中实际连接这些不同的层。我的意思是,归根结底,它们是类,我如何将域类(模型)与相关的持久性(模型)和视图模型连接起来?

谁能给我一个很棒的教程,教如何构建 n-tire asp.net 应用程序?

如果没有,如果可能的话,谁能告诉我如何为以下场景构建和连接三种类型的模型。

客户有姓名、出生日期、地址和订单集合

一个订单有一个客户、日期、价格和描述

我如何创建单独的持久性、域和视图模型(例如:一个视图模型来显示除 DOB 和与客户相关的所有订单之外的所有客户信息)

更重要的是如何连接它们?

非常感谢! 干杯!

【问题讨论】:

  • 您在寻找架构层吗?
  • 请。我如何将它们连接在一起?我的意思是如何为现有的持久性模型创建一个单独的域模型?
  • 您好感谢 Manoz 的快速响应。我以前看过那篇文章。但是,我认为它不能证明我想要什么。我正在尝试使用代码优先方法,我找到的最接近的教程是 imar.spaanjaars.com/573/… 。即使这样也没有将领域模型与持久性模型分开。
  • 您好,我终于找到了 Layers 的零基础开发。希望对您有所帮助-c-sharpcorner.com/UploadFile/4d9083/…

标签: asp.net-mvc asp.net-mvc-4 model-view-controller asp.net-mvc-5


【解决方案1】:

您创建视图模型以匹配视图,而不是您可能希望在创建/编辑视图中显示的模型(实体)中的每个属性,或者您希望显示它但组合或以不同的方式,这就是您需要的原因视图模型,通常您会在视图模型中为视图中的每个编辑器/输入提供一个属性

例如,在实体中,您可以拥有一个 DateTime 属性,但在 ViewModel 2 属性中,一个用于日期,一个用于时间, 或者在实体中,您将拥有 Country 类型的属性,但在 int 类型的 ViewModel 中(id 的值)

当你有这种分离时,你需要将实体映射到 ViewModel,反之亦然

对于演示应用,您可以在这里查看:http://prodinner.codeplex.com/

【讨论】:

    猜你喜欢
    • 2012-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-30
    • 1970-01-01
    • 2015-01-31
    • 2011-04-21
    相关资源
    最近更新 更多