Почему платформа Entity загружает данные из базы данных, когда я устанавливаю свойство? - PullRequest
0 голосов
/ 02 марта 2011

У меня есть две таблицы (их больше в базе данных, но здесь задействованы только две).
Account и AccountStatus, учетная запись может иметь AccountStatus (активная, неактивная и т. Д.).

Я создаю новую учетную запись и устанавливаю несколько свойств, но когда я получаю этот код:
1. var status = db.AccountStatuses.SingleOrDefault (s => s.ID == (long) AccountStatusEnum.Active);
2. account.AccountStatus = status;
3. db.Accounts.AddObject (account);
Первая строка выполняется нормально, но когда я дохожу до второй строки, это занимает ДЕЙСТВИТЕЛЬНО много времени, и когда я вхожу в код, кажется, что каждая отдельная учетная запись загружается из базы данных.

Не понимаю, зачем вообще хотеть загружать все аккаунты?
Мы используем Entity Framework 4 и Poco, и у нас включена отложенная загрузка.

Есть предложения?
Приветствия
/ Jimmy

1 Ответ

2 голосов
/ 02 марта 2011

Вы должны быть осторожны, какие конструкции вы используете для извлечения данных, так как некоторые извлекают весь набор и фильтруют послесловие.(в сторону: длительной задержкой может быть создание и заполнение базы данных, если ее еще нет, это произойдет при первом прикосновении к ней, вероятно, с каким-то запросом. Также помните, что при извлечении всейнабор данных, в действительности вы можете иметь только то, что составляет скомпилированный запрос, который не будет оцениваться до тех пор, пока вы с ним не будете взаимодействовать).

Попробуйте вместо этого эту форму и посмотрите, есть ли у вас такая же проблема:

var status = db.AccountStatuses.Where(s => s.ID == (long)AccountStatusEnum.Active);
...