休閒屬性在POCO類中定義。首先ASP.Net MVC代碼。如何強制只有attrubute存儲在數據庫?
public int total { get{ return sub_total_1 + sub_total_2; }}
當添加新的遷移時,不創建該屬性,也不存儲在表上。
我試圖添加[Column(「Total」)]註釋沒有成功。
是否可以將此屬性存儲在數據庫中作爲未來查詢的「緩存」?
謝謝。
休閒屬性在POCO類中定義。首先ASP.Net MVC代碼。如何強制只有attrubute存儲在數據庫?
public int total { get{ return sub_total_1 + sub_total_2; }}
當添加新的遷移時,不創建該屬性,也不存儲在表上。
我試圖添加[Column(「Total」)]註釋沒有成功。
是否可以將此屬性存儲在數據庫中作爲未來查詢的「緩存」?
謝謝。
對於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_1
和sub_total_2
的總和。如果子屬性在從數據庫中檢索後更新,您可以在此檢查中找到另一種方法,但這對您正在執行的操作來說是一個很好的開始。
這兩個整數求和就是一個簡單的例子。在這種情況下,任務稍微複雜一些。這就是爲什麼我想緩存它。 –
但是,數據庫操作似乎比這裏的任何計算都要慢 –
如果您能夠提供您的直接示例,那麼這可能會有所幫助。但是,給它一個'public get'和'protected internal set'可能就是你想要的。 – krillgar