如何定义已创建对象集?

时间:2011-09-23 08:49:01

标签: mysql database entity-framework datareader

我正在使用实体框架和mysql。我们创建了一个类

public class DataBaseContext : ObjectContext, IDbContext

有一种方法

 public IEnumerable<T> Find<T>(Func<T, bool> whereClause) where T : class
        {
            return CreateObjectSet<T>().Where(whereClause);
        }

每次调用方法时,有没有办法不创建ObjectSet?我可以检查它是否已经存在?

1 个答案:

答案 0 :(得分:0)

Whooooo。这是一个非常糟糕的方法。您正在传递Func<>,而不是Expression<Func<>>。这意味着每次执行方法时,EF都会从映射到T的数据库表中提取所有记录,并在应用程序的内存中执行过滤 - 创建对象集是您应该害怕的最后一件事。

无论如何,创建对象集不应该是昂贵的操作,如果你不想在每次需要在对象上下文实例中实现一些“本地缓存”时创建它。