C # Oracle транзакции - PullRequest
       3

C # Oracle транзакции

0 голосов
/ 24 ноября 2011

Как я могу вставить запись своих детей в одну транзакцию?

Например, у меня есть класс с именами Requisition (IdRequisition, Description, RegisterDate) и RequisitionRequirement (IdRequisitionRequirement, IdRequisition, DocumentName, DeliveryDate, LimitDate ) и мне нужно вставить Requisition и получить IdRequisition по параметру, а затем вставить список RequisitionRequirements, который должен быть связан с Requisition, в одну транзакцию и убедиться, что если один из RequisitionRequirement не удается вставить, сделать откат.

Я не знаю, как правильно это сделать, если обрабатывать транзакции из c # с помощью cmd.Connection.BeginTransaction() или другим способом.

Я использовал Linq для сущностей, и у нас не было проблем с этим, но текущее приложение использует Oracle и хранимые процедуры, и я новичок в этом контексте.

Извините за мой английский, но я тоже учусь!

Ответы [ 2 ]

1 голос
/ 24 ноября 2011

Просто оберните ваш код в область транзакции.Не закрывайте соединение во время вызова хранимых процедур внутри области.Кстати, рассмотрите возможность использования функции для возврата IdRequisition вместо использования параметра out.

using (TransactionScope scope = new TransactionScope())
{
    // Save Requisition and get IdRequisition 
    // Save RequisitionRequirements 
}
0 голосов
/ 24 ноября 2011

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

Взгляните на статью ODP.NET - Выберите тип транзакции ODP.NET, соответствующий вашим бизнес-правилам.

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