2016-07-25 43 views

回答

1

对于EF能够监视一个属性,它需要有一个public(1)getter和setter。

对于你正在做的事情,除非你需要它在数据库中进行一些操作,你可以把它作为一个只读属性留在你的Poco类中。将两个整数加在一起的操作根本不是性能上的担心,并且可能会更慢地从数据库中拉出来。

(1)如果您希望它是“只读”(数据库除外),则设置器可以是protected internal

至于如何做到店内,在数据库高速缓存的目的值的例子,你可以做这样的事情:

private int? total; 
public int Total 
{ 
    get 
    { 
     return total ?? sub_total_1 + sub_total_2; 
    } 
    protected internal set 
    { 
     total = value; 
    } 
} 

在这个例子中,新private total变量将存储什么是数据库。它是可空的,因此如果它不从数据库中检索,则默认为sub_total_1sub_total_2的总和。如果子属性在从数据库中检索后更新,您可以在此检查中找到另一种方法,但这对您正在执行的操作来说是一个很好的开始。

+0

这两个整数求和就是一个简单的例子。在这种情况下,任务稍微复杂一些。这就是为什么我想缓存它。 –

+0

但是,数据库操作似乎比这里的任何计算都要慢 –

+1

如果您能够提供您的直接示例,那么这可能会有所帮助。但是,给它一个'public get'和'protected internal set'可能就是你想要的。 – krillgar

相关问题