У кого-нибудь есть хорошая информация об использовании метода .SaveChanges()?Каков наилучший способ использования метода .SaveChanges() в службах данных ADO.Net?
У меня возникает множество проблем при попытке использовать метод .SaveChanges() для объекта контекста данных. Я беру данные из существующего источника данных, создавая соответствующие объекты EntityFramework/DataService, заполняя эти созданные объекты данными, добавляя эти объекты в контекст, а затем сохраняя эти данные, вызывая .SaveChanges.
Сценарии, с которыми я столкнулся (и связанные с ними проблемы), таковы ... В каждом сценарии у меня есть цикл foreach, который принимает данные из строк в DataTable и генерирует объекты, прикрепляя их к контексту по мере их поступления. (обратите внимание: три объекта - «член» и два «адреса», которые подключены через вызов SetLink) - в основном это инструмент преобразования, который позволяет получать данные из одного хранилища данных и массировать их в хранилище данных, которое предоставляется службами данных.
- .SaveChanges вызова() без каких-либо параметров, как только в конце цикла Еогеаспа (т.е. вне цикла)
- OutOfMemory ошибки около 1/3 пути (30000 из 90000 позволяет экономить) - не уверен, как это происходит, поскольку, поскольку каждый элемент сохранения является отдельным SQL-вызовом в базу данных, на чем заканчивается память?
- .SaveChanges вызова() без каких-либо параметров один раз в цикле
- Это работает, но занимает Absolutly навсегда (8 часов 90000) спасает
- .SaveChanges вызовов (SaveChangesOption.Batch) один раз в конце цикла Еогеасп
- же OutOfMemory ошибки, но без каких-либо сохраняет в базе данных
- вызова .SaveChanges (SaveChangesOption.Batch) один раз в цикле
- 404 не найдена ошибка
- вызова .SaveChanges (SaveChangesOption.Batch) один раз в 10 петель
- 400 Bad Request ошибки (время от времени)
- OutOfMemory после ряда итераций
- Несколько случайных попыток создать контекст один раз для каждого цикла или иметь его как переменную в начале цикла или использовать ее как переменную частного члена, которая доступна.
- Отличающиеся результаты, не в состоянии количественно, ни на самом деле, что хорошее
Что является предпочтительным методом вызова .SaveChanges() из объекта клиента при выполнении большой загрузки данных, как это? Есть ли что-то, о чем я не понимаю, как работает .SaveChanges()? Может ли кто-нибудь предоставить более подробную информацию о том, как следует использовать эту функцию, и что (если таковые имеются) являются ограничениями для сохранения данных через службы данных?Существуют ли какие-либо рекомендации по вызову метода .SaveChanges()? Есть ли особенно хорошая документация по вызову метода .SaveChanges()?
Какие «изменения» вы внедряете? Почему 90 000 экономит? Может быть, вы должны попробовать SQL-репликацию, если вы просто передаете данные? просто мысль. – D3vtr0n 2008-11-28 05:16:53
просто для пояснения, когда вы говорите «один раз за цикл», вы имеете в виду один вызов за цикл * итерация *? – Veverke 2015-10-12 12:22:04