在Entity Framework中使用getter,方法和计算属性

时间:2016-08-01 09:42:33

标签: asp.net-mvc entity-framework

我想知道如何将计算属性添加到域模型中的差异。我将ASP.NET与Entity Framework结合使用。

首先我意识到我能做到:

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
    { 
    }
}

这件神奇的东西在我看来与前一个选项基本相同,但是它将这个值保存在数据库中 - 虽然对我而言,它似乎很受欢迎,但它是否从数据库中获取值或计算/更新它。

其他人使用的是什么,以及每种人的利弊是什么?

0 个答案:

没有答案