gpt4 book ai didi

asp.net-mvc-3 - MVC3 View 模型与 Entity Framework 模型

转载 作者:行者123 更新时间:2023-12-04 12:11:13 24 4
gpt4 key购买 nike

不知道如何解释这一点,但这里是......

我已经使用 EF 4.3 构建了一个代码优先数据模型。类之一,“地址”包含典型的地址数据、街道、城市、州等。模型中的其他类包含“地址”类的实例。

问题。数据将使用不同的 View 收集/呈现,其中一些需要地址字段,而另一些则不需要。

我可以构建不同的 View 模型,每个模型都具有必要的验证属性,并在数据模型和 View 模型之间来回复制数据,但这似乎是错误的。

我错过了什么?必须有更聪明的方法来做到这一点。

谢谢你的帮助,
吉米

最佳答案

首先阅读这些问题及其答案:

  • MVC: Data Models and View Models
  • Why Two Classes, View Model and Domain Model?

  • 这篇文章也可以帮助:
  • ASP.NET MVC View Model Patterns

  • 总之,我认为在大多数情况下,拥有一个胖域模型 (DM) 和与之相关的轻量级演示模型 (PM) 是有帮助的。因此,当我们只想编辑那个胖 DM 的一小部分时,我们的一位 PM 会举手。

    想象一下 DM 中的这个类:
    namespace DomainModels
    {
    public class Person
    {
    public int ID { get; set; }
    public string FirstName { get; set; }
    public string MiddleName { get; set; }
    public string LastName { get; set; }
    public DateTime? DoB { get; set; }
    public MyAddressDM Address { get; set; }
    public string Phone { get; set; }
    public IEnumerable<MyCarModel> Cars { get; set; }
    //etc.
    }
    }

    现在想象一下,在一个 View 中,我们只需要编辑地址和电话。一个轻量级的 PM 可能是这样的:
    namesapce PresentationModels
    {
    public PersonAddressPhone
    {
    public int ID { get; set;}
    public string FullName { get; set;}
    public string AddressSteet { get; set; }
    public string AddressCity { get; set; }
    public string AddressState { get; set; }
    public string AddressZipCode { get; set; }
    public string Phone { get; set; }
    }
    }

    在另一个 View 中,我们需要为一个人添加/删除汽车:
    namesapce PresentationModels
    {
    public PersonCars
    {
    public int ID { get; set;}
    public string FullName { get; set;}
    public IEnumerable<PMCar> Cars { get; set;}
    }
    }

    DO 和 PM 之间的映射是这个难题的黄金部分。一定要看看 AutoMapper .

    关于asp.net-mvc-3 - MVC3 View 模型与 Entity Framework 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11302163/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com