0

我在我的应用程序中使用 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 遍历所有属性。它在创建对象时调用属性的所有获取函数,即使我不访问它们。

这种行为的目的是什么,是否有解决方法。这可能与跟踪更改有关吗?将公式放在对象本身中对我来说真的很方便,但现在它严重影响了性能。

4

1 回答 1

2

您可以尝试添加

[NotMapped]
public int FormulaA ....

而且在查询中只选择你真正需要的属性。

select new {e.PropA, e.PropB}
于 2012-09-27T08:32:38.123 回答