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

Ine*_*nez 3 asp.net-mvc entity-framework business-objects

假设我的客户模型包含以下字段:Id,FirstName,LastName.我想在列表视图中显示客户列表.为此,我使用我的服务方法返回List以在视图中迭代.

但现在我还想为每个客户显示一些额外的信息,例如信用.此信息不存储在数据库的特定字段中,但必须根据Transacitons中的数据进行计算.我应该在哪里进行此计算?

我可以有一个名为Credit for Customer模型的额外字段,并在getter中执行,但我不确定这是否是最佳方式,尤其是内部模型我无法访问EF上下文.

Cra*_*ntz 5

假设你的问题措辞正确,这只是为了展示,而不是为了业务流程(这将是一个完全不同的问题)......

在您的演示模型中执行此操作.添加所需的输入,投影到它们,然后计算输出.这是一个非常简单的例子.现实世界更复杂.

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);
}
Run Code Online (Sandbox Code Playgroud)