2016-07-25 30 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

相關問題