我正在使用实体框架和mysql。我们创建了一个类
public class DataBaseContext : ObjectContext, IDbContext
有一种方法
public IEnumerable<T> Find<T>(Func<T, bool> whereClause) where T : class
{
return CreateObjectSet<T>().Where(whereClause);
}
每次调用方法时,有没有办法不创建ObjectSet?我可以检查它是否已经存在?
答案 0 :(得分:0)
Whooooo。这是一个非常糟糕的方法。您正在传递Func<>
,而不是Expression<Func<>>
。这意味着每次执行方法时,EF都会从映射到T
的数据库表中提取所有记录,并在应用程序的内存中执行过滤 - 创建对象集是您应该害怕的最后一件事。
无论如何,创建对象集不应该是昂贵的操作,如果你不想在每次需要在对象上下文实例中实现一些“本地缓存”时创建它。