Обновление LINQ-To-Sql - Проблемы с производительностью - PullRequest
5 голосов
/ 09 марта 2011

У меня есть таблица, которая включает 230 столбцов и 12 миллионов строк.

Мне нужно обновить 123 поля КАЖДОЙ строки.

Если я пытаюсь сделать это с помощью LINQ-To-Sql, я получаю исключение System.OutOfMemory.

Я знаю, что не получаю ошибку OutofMemory, если отключу отслеживание объектов. Но я думаю, что не могу выполнить обновления, если отключу отслеживание объектов.

Как лучше всего их обновить?

Ответы [ 2 ]

10 голосов
/ 09 марта 2011

Это не задача, подходящая для LINQ-to-SQL или, честно говоря, для любого ORM. Вы не хотите перетащить столько данных дважды по сети таким образом; в идеале это должно быть написано на чистом TSQL, возможно, используя массовую вставку / SqlBulkCopy для заполнения отдельной таблицы, если вам нужно объединить данные из других источников.

0 голосов
/ 24 марта 2011

Я бы определенно предложил вам изменить архитектуру, разделить большую таблицу на несколько маленьких и определенно избегать linq-to-sql для такого количества данных.

Создайте архитектуру таким образом, чтобы вы имеликлассы для каждой сущности на бизнес-уровне, которые будут вызывать хранимые процедуры запросов T-SQL для обновления данных на уровне доступа к данным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...