Записать Entity Framework в SQLTransaction? - PullRequest
0 голосов
/ 23 декабря 2011

У нас много устаревшего кода, который использует наш собственный объект данных.Мы медленно пытаемся ввести EF.Нам нужна возможность зачисления EF в транзакцию, которую мы уже начали использовать System.Data.SqlClient.SQLTransaction.EF, конечно, использует System.Transaction.Transaction.Это возможно?

Чтобы сделать вещи более понятными.У нас везде есть код, который делает следующее:

public sub DeleteEntity()
     Dim InTransaction = ado.InTransaction
     if not InTransaction then ado.BeginTran
     ...
       <--want to use EF Here
     ...
     if not InTransaction then ado.CommitTran
end sub

Процедура DeleteEntity не проста.В нем много логики.Я хочу использовать EF для просто чего-то нужного в середине кода, поэтому мне нужно включить его в активную транзакцию.Я не могу просто использовать область транзакции из-за того, как она разработана.DeleteEntity вызывается во многих местах, и я не хочу посещать каждое место, которое вызывает рутину.Это больше относится к System.Transaction.Transaction и SqlTransaction, чем к самому EF.

Обновление: я пробовал:

context.connection.EnlistTransaction(Transaction.Current)

Это не работает.

1 Ответ

0 голосов
/ 23 декабря 2011

Возможно, я ошибаюсь, но вы рассматривали возможность использования ObjectQuery вместо использования Linq to Entities для операции удаления. Вот что я нашел на MSDN здесь

Продвижение транзакции в DTC может происходить, когда соединение закрыт и вновь открыт в рамках одной транзакции. Потому что сущность Framework открывает и закрывает соединение автоматически, вы должны рассмотреть возможность открытия и закрытия соединения вручную, чтобы избежать продвижение сделки. Для получения дополнительной информации см. Как: Открыть вручную Соединение из контекста объекта .

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