【问题标题】:ASP.NET - View model with only partial domain modelASP.NET - 仅具有部分域模型的视图模型
【发布时间】:2014-04-20 05:23:37
【问题描述】:

当我想要使用视图模型并且想要包含有关存在于我的域模型中的实体的数据,但我不想包含域模型中的所有内容时,最好的做法是什么。我想了3种可能,哪一种最合适?我在 VS 2013 中使用 MVC 4。

  1. 只是实现我想在我的视图模型中使用的特定属性并映射它们? (我觉得这很糟糕,因为当有一个缩减域模型的数组时,由于属性不相关,它会使遍历数组变得更加困难)

  2. 添加另一个映射到域模型的视图模型,并且只有这些特定属性? (这感觉也很糟糕,因为它会将视图模型从视图中分离出来,因为突然有视图模型没有对应的视图)

  3. 添加仅具有特定属性的另一个模型并将其包含在我的视图模型中? (我的模型是用 EF 5.0 自动生成的,所以我不想弄乱模型的结构)

  4. 只包含整个域模型并承担开销?

  5. 还有其他我没有想到的可能性吗?

【问题讨论】:

  • 使用视图模型的全部意义在于拥有一个对象,该对象包含通常与您的域对象之一中的字段相对应的字段。通常您可以将域模型的属性复制粘贴到您的视图模型中,所以我不确定您的困惑到底在哪里。获取您需要的属性并将它们放入视图模型中。
  • 我确实在备选方案 1 中描述了将属性复制粘贴到我的域模型中,我对此的担忧是我的视图模型必须包含该特定域模型(或更确切地说是其部分)的数组,并且由于属性未连接,因此循环遍历我的结果会变得更加困难。我也担心它们的顺序可能不同,或者通常彼此不相关。

标签: asp.net-mvc entity-framework model viewmodel


【解决方案1】:

我决定在我的视图模型中使用一个内部类,它只代表我真正想要使用的域模型的那些属性。然后我可以将域模型映射到内部类模型,并且效果很好。

我仍然不确定在这种情况下什么是“最佳实践”,如果这样简单的任务存在这样的事情。

【讨论】:

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