我想知道如何将计算属性添加到域模型中的差异。我将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
{
}
}
这件神奇的东西在我看来与前一个选项基本相同,但是它将这个值保存在数据库中 - 虽然对我而言,它似乎很受欢迎,但它是否从数据库中获取值或计算/更新它。
其他人使用的是什么,以及每种人的利弊是什么?