0
我使用EF代碼第一次在我的應用程序,並有下面的類:EF代碼第一次迭代創建對象
[Table("TBL_XYZ")]
public class XYZ
{
[Required]
public string PropA { get; set; }
[Required]
public int PropB { get; set; }
public int FormulaA
{
get
{
return PropB * Math.PI/100;
}
}
}
這是我如何從數據庫中的數據:
var data = (from e in db.XYZ where e.PropB < 100 select e).ToList();
當我添加了一些更多的字段進行計算並且沒有設置訪問器(比如FormulaA)時,我意識到執行上述行時性能下降。
經過一番調試,我發現EF遍歷所有的屬性。它在創建對象時調用屬性的所有獲取函數,即使我不訪問它們。
這種行爲的目的是什麼,是否有解決方法。這可能與跟蹤變化有關嗎? 對我來說,在對象本身中使用我的公式非常方便,但現在它嚴重影響了性能。
NotMapped屬性是一個好主意。但我也有一些屬性是公式,也應該存儲在數據庫中;這對NotMapped不起作用。 – Preli
有趣的案例。那麼第二個變體和只有加載數據才能初始化你的類型呢? – AlexT
我不確定我是否理解「僅使用加載的數據初始化您的類型」?你的意思是「選擇新的{e.PropA,e.PropB}」嗎? – Preli