Asp.net mvc 在实体框架中使用getter、方法和计算属性

Asp.net mvc 在实体框架中使用getter、方法和计算属性,asp.net-mvc,entity-framework,Asp.net Mvc,Entity Framework,我想知道如何将计算属性添加到域模型中的区别。我正在使用ASP.NET和实体框架 首先,我意识到我可以做到: public decimal TotalValue { get; set; } 这是一个标准的数据库列 我还可以创建一个方法: public decimal TotalValue() { return this.Invoices.Sum(x => x.Value) } 无论何时创建对象,都会计算哪个值?访问?还是只有当我访问该方法时 这个例子与这个例子有什么不同: pub

我想知道如何将计算属性添加到域模型中的区别。我正在使用ASP.NET和实体框架

首先,我意识到我可以做到:

public decimal TotalValue { get; set; }
这是一个标准的数据库列

我还可以创建一个方法:

public decimal TotalValue()
{
    return this.Invoices.Sum(x => x.Value)
}
无论何时创建对象,都会计算哪个值?访问?还是只有当我访问该方法时

这个例子与这个例子有什么不同:

public decimal TotalValue
{
    get 
    {
        return this.Invoices.Sum(x => x.Value)
    }    
}
这与前面的示例相同吗?从调试器中可以看出,每当我检索父对象时,都会不断地计算该值,所以我觉得这样做效率低下

最后,我最近了解到我可以做到这一点:

public decimal TotalValue
{
    get 
    {
        return this.Invoices.Sum(x => x.Value)
    }    
    set
    { 
    }
}
在我看来,这一魔术基本上与前面的选项相同,但是它将此值保存在数据库中-尽管在我看来,它是从数据库获取值还是计算/更新值似乎是非常偶然的


其他人都在使用什么?每个选项的优缺点是什么?

据我所知,您希望向模型中添加不应存储在数据库中的属性,对吗?我只是想了解这些选项中的哪些适合我的要求,并且在调用或访问它时,将计算每个选项的优缺点。您可以添加忽略属性,使其不与数据库关联。据我所知,您希望将不应存储在数据库中的属性添加到您的模型中,对吗?请尝试了解这些选项中的哪一个适合我的要求,并且在调用或访问它时将计算每一个选项的优缺点。您可以添加忽略的属性,使其不与数据库关联。