代码之家  ›  专栏  ›  技术社区  ›  Inez

实体框架-业务对象/模型的额外动态计算属性(ASP.NET MVC)

  •  3
  • Inez  · 技术社区  · 15 年前

    假设我有一个带有以下字段的客户模型:id、firstname和lastname。我想在列表视图中显示客户列表。为此,我使用我的服务方法,该方法返回要在视图中迭代的列表。

    但现在我还想为每个客户显示一些附加信息,例如credit。此信息不存储在数据库的特定字段中,但必须基于事务中的数据进行计算。我应该在哪里计算?

    我可以有一个称为credit for customer模型的额外字段,并在getter中执行,但我不确定这是否是最好的方法,特别是在od模型中,我无法访问ef上下文。

    1 回复  |  直到 15 年前
        1
  •  5
  •   Craig Stuntz    15 年前

    假设您的问题措辞正确,这实际上只是为了显示,而不是为了业务流程(这将是一个完全不同的问题)。

    在演示模型中执行此操作。添加所需的输入,投射到它们上,并计算输出。这里有一个 非常琐碎 例子。现实世界更复杂。

    class Person // entity
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
    }
    
    class PersonPresentation
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string DisplayName 
        {  
            get 
            { 
                return string.Format("{0} {1}", this.FirstName, this.LastName);
            }
        }
    }
    
    public ActionResult DisplayPeople()
    {
        var model = from p in Repository.AllPeople()
                    select new PersonPresentation
                    {
                        FirstName = p.FirstName,
                        LastName = p.LastName
                    };
        return View(model);
    }