Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> SaveChanges и AcceptAllChanges в EF, Как правильно применять? 
:(
    Опции темы
amarenkov
Дата 3.7.2009, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 21.2.2008
Где: Воронеж

Репутация: нет
Всего: нет



Добрый день.

Есть 4 таблицы. Есть XML. Из XML читаю данные и гружу в базу. За один "шаг" чтения создаю 1 запись в одной таблице, 2 в другой, и по 5-6 в оставшихся 2-х. Таких "шагов" у меня 50 000. 

Сейчас с огромным скрипом проходит 6 000 шагов. При этом отжирается 600Мб памяти, и оочень долго выполнение висит на функции SaveChanges(false). 

Вопрос: как правильно использовать SaveChanges, AcceptAllChanges? Как, вообще, мне грамотно быстро загрузить эти данные в базу? Возможно не стоит использовать EF?

Заранее спасибо smile.
PM MAIL ICQ   Вверх
Idsa
Дата 3.7.2009, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



Цитата(amarenkov @  3.7.2009,  15:21 Найти цитируемый пост)
Сейчас с огромным скрипом проходит 6 000 шагов. При этом отжирается 600Мб памяти, и оочень долго выполнение висит на функции SaveChanges(false). 

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

Цитата(amarenkov @  3.7.2009,  15:21 Найти цитируемый пост)
Вопрос: как правильно использовать SaveChanges, AcceptAllChanges? Как, вообще, мне грамотно быстро загрузить эти данные в базу? Возможно не стоит использовать EF?

А что за задача решается? Насколько часто нужно ее выполнять? Насколько критично время выполнения/память?
Потребление памяти можно снизить, чаще создавая контекст (например по контексту на каждую тысячу сущностей). Тогда неиспользуемые контексты будут подчищены сборщиком мусора. Правда, не уверен, удастся ли использовать одну транзакцию в рамках нескольких контекстов. 
В целом, если поставленную задачу нужно выполнить быстро и с минимальным потреблением памяти, стоит воспользоваться чистым ADO.NET.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0415 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.