Вы должны изменить свою конфигурацию бегуна на gitlab на , увеличить размер shm
Например: shm_size = 300000
Linq2SQL будет использовать неявную транзакцию. Если все Ваши обновления сделаны в рамках сингла, Отправляют, Вы, возможно, не должны обрабатывать транзакцию сами.
Из документации (шахта акцента):
, Когда Вы называете SubmitChanges, LINQ к проверкам SQL, чтобы видеть, является ли вызов в пределах Транзакции или если свойство Transaction (IDbTransaction) установлено на запущенную пользователями локальную транзакцию. , Если это не находит никакую транзакцию, LINQ к SQL запускает локальную транзакцию (IDbTransaction) и использует его для выполнения сгенерированных команд SQL. , Когда все команды SQL были успешно завершены, LINQ к SQL фиксирует локальную транзакцию и возвраты.
Нужно отметить, что при использовании TransactionScope
нет никакой потребности в эти try/catch
конструкция, которую Вы имеете. Просто необходимо звонить Complete
на объеме для фиксации транзакции, когда из объема выходят.
Однако TransactionScope
обычно лучший выбор, потому что он позволяет Вам вызовам вложенного множества к другим методам, которые могли бы потребовать транзакции без Вас имеющий необходимость раздать состояние транзакции.
При вызове BeginTransaction
на DbConnection
объект, необходимо раздать тот объект транзакции, если Вы хотите выполнить другие операции в той же транзакции, но в другом методе.
С TransactionScope
, пока объем существует, он обработает все, что регистрируется в токе Transaction
на потоке, делая Ваш инструмент для очистки кода, и более удобный в сопровождении.
Вдобавок ко всему, Вы обладаете дополнительным преимуществом способности использовать другие ресурсы, которые могут участвовать в транзакциях, не только соединении с базой данных.
нужно отметить, что в ситуациях, где необходимо сжать большинство из соединений и операций базы данных, Вы не могли бы хотеть использовать TransactionScope
; даже против единой базы данных, Вы выполняете возможность используемого Distributed Transaction Coordinator и имеющий транзакцию, превращаемую в распределенную транзакцию (даже для соединения единой базы данных).
В этих случаях, при измазывании дизайна, Вы могли бы хотеть рассмотреть раздавание определенной для соединения транзакции.
Или , если Вы знаете, Вы будете последовательно использовать один ресурс (и на том же потоке), Вы могли бы хотеть создать класс это подсчеты ссылок Ваше соединение/транзакция.
Вы создали бы класс, что на конструкции, создает Ваш ресурс/инкременты количество. Это также реализовало бы IDisposable
(в котором Вы будете постепенно уменьшаться/выпускать/фиксировать/прерывать, когда количество будет нулем), и сохраните количество в переменной, которая имеет ThreadStaticAttribute
, относился к нему.
Это позволяет Вам разделять управление транзакциями от логического кода и все еще держать на исключительный ресурс справедливо эффективно (вместо того, чтобы возрасти к распределенной транзакции).
Я полагаю, что они - существенно то же, с которым класс TransactionScope соединит интерфейсом с ADO.NET, лежащим в основе соединения, чтобы создать и или фиксировать или откатывать транзакцию. То, что класс TransactionScope был просто создан для создания работы с инструментом для очистки персистентности ADO.NET.
Редактирование: Разъяснение моего оператора относительно дополнение casperOne это - TransactionScope, который создаст транзакцию, и соединение будет затем видеть транзакцию, которая была создана TransactionScope, и используйте его, так как это доступно ему.