我有一個工作模型,包含了許多特性,和一組鏈接的實體稱爲行情:瞭解虛擬化和計算性能
public class Job
{
....
public virtual ICollection<Quote> Quotes { get; set; }
}
在我的作業類,我有以下計算性能:
public decimal QuotesAwarded
{
get
{
if (Quotes == null || !Quotes.Any())
{
return 0;
}
var totalUnapprovedQuotes = Quotes.Where(x => x.Status != "Approved");
return 1 - (totalUnapprovedQuotes.Count()/Quotes.Count());
}
set
{
}
}
我有2個問題:
當我調試此屬性,
Quotes
爲空(即使有附引號這個實體)。我認爲,使用virtual
意味着,這不應該發生的呢?我怎樣才能確保在模型構建時,相關的報價實體被附加?我這樣做的原因是,該屬性值存儲在數據庫中,所以它減少計算時間,因爲它是預先計算的,這是正確的?檢索作業對象時,我沒有使用
Include<Quotes>
在大多數情況下:
跟進。我僅在需要QuotesAwarded
值時才使用「包含」。
但是,如果我不使用Include
(比如db.jobs.find(id)
),和報價爲空,而QuotesAwarded
值將爲0。所以,當我保存作業對象,這將得到保存到數據庫中,我真的很迷茫我在這裏。
您是使用懶惰還是渴望加載?你如何從數據庫中讀取實體? – DavidG
感謝您的答覆,我已經更新了問題 –