Как избежать ошибок при многократной вставке с помощью уникальной хранимой процедуры? - PullRequest
0 голосов
/ 08 февраля 2011

Интересно, как можно управлять транзакциями в коде c # .. Мне нужно сделать несколько вставок одного и того же объекта с уникальной хранимой процедурой.Поэтому мне приходится запускать одну и ту же хранимую процедуру с одними и теми же параметрами несколько раз.

Но если в процессе возникает проблема (потеря соединения, ...), я не хочу, чтобы выполнялась только часть вставок иотдых не удался, я хочу, чтобы все вставки были отменены.Поэтому я хотел бы выполнить транзакцию SQL, но в коде приложения, потому что база данных не может быть изменена.

Я надеюсь, что я достаточно ясен и надеюсь, что кто-то может мне помочь и подтолкнуть меня на правильный путь.*

Ответы [ 3 ]

2 голосов
/ 08 февраля 2011

Вы можете вызвать BeginTransaction для SqlConnection перед началом работы, а затем CommitTransaction (или RollbackTransaction) в конце.

См. Ссылка MSDN здесь , например.

1 голос
/ 08 февраля 2011

Класс SqlConnection (IDbConnection интерфейс) имеет метод BeginTrasaction, посмотрите здесь .

1 голос
/ 08 февраля 2011

Вы можете использовать метод BeginTransaction (и соответствующие последующие методы) для выполнения транзакций из кода. Эта ссылка содержит пример того, как это сделать.

Пример:

db.BeginTransaction("myTransaction");
try
{
    // all your code here.  If anything goes awry, throw an exception

    // all good, commit it.
    db.CommitTransaction();
}
catch(Exception e)
{
    // undo everything we just did
    db.RollbackTransaction();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...