我在我的应用程序中使用 EF Code First 并具有以下类:
[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 遍历所有属性。它在创建对象时调用属性的所有获取函数,即使我不访问它们。
这种行为的目的是什么,是否有解决方法。这可能与跟踪更改有关吗?将公式放在对象本身中对我来说真的很方便,但现在它严重影响了性能。