Как я могу определить, что набор объектов уже был создан? - PullRequest
0 голосов
/ 23 сентября 2011

Я работаю с Entity Framework и 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 голосов
/ 23 сентября 2011

Whooooo. Это так плохой метод. Вы проходите Func<>, а не Expression<Func<>>. Это означает, что каждый раз, когда вы выполняете свой метод, EF извлекает все записи из таблицы базы данных, сопоставленной с T, и выполняет фильтрацию в памяти вашего приложения - создание набора объектов - это последнее, чего вы должны бояться.

В любом случае создание набора объектов не должно быть дорогой операцией, и если вы не хотите создавать его каждый раз, когда вам нужно реализовать некоторое «локальное кэширование» внутри экземпляра контекста объекта.

...