2013-05-07 2 views
0

Есть ли способ откат после db.submitchanges без необходимости совершать транзакции?linq to sql underitchanges rollback

Было бы жаль, если бы вам пришлось воспользоваться специальным сервисом для регистрации. Есть ли альтернатива откату и не использовать эту специальную услугу?

благодарит заранее!

EDIT:

Что я действительно хочу: у меня есть 2 взаимодействие с базой данных, которые я хочу сделать сразу после друг друга.

скажем, я хочу добавить что-то в таблицу базы данных «Слоты». После отправки этого сообщения я могу получить Id, который был создан с помощью автоматического приращения.

Этот идентификатор, я хочу использовать для вставки нового журнала в базу данных. но при вставке в журналы сбои я тоже хочу отменить действие в «Слотах».

Это возможно с транзакциями, которые, я считаю, но я не могу это сделать, не получая ошибок. даже если все серверы установлены, чтобы позволить им и межсетевые экраны отключены ..

+0

О каком специальном сервисе вы говорите? Как насчет регистрации? Я не понимаю, в чем вопрос. – usr

ответ

0

No.

db.SubmitChanges() открывает сделку itsself так избежать этого не вариант.

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

Простейшим решением является использование speparate datacontext для ведения журнала.

Update Там нет необходимости в нескольких SubmitChanges в вашем случае, потому что вам не нужен идентификатор, вы можете добавить объект в журнал. Посмотрите здесь How do I get Id of a record without submitting and re-querying?

И так как вы можете иметь только SubmitChanges, все это будет в одной транзакции, и он будет делать то, что вы хотите

+0

Я отредактировал исходный вопрос с некоторой дополнительной информацией ... – user1122844

+0

Ответил, что уже в другом вопросе - я обновил свой ответ ссылкой – Pleun

-1

Вы должны вставить как шлицы и журнал в то же время.

Я понятия не имею, как ваша модель данных наращивается, но упрощается.

Log myLog = new Log(); 
Slot mySlot = new Slot(); 
... 
... 

DataContext db = new DataContext(); 

db.Slots.InsertOnSubmit(mySlot); 

myLog.Slot = mySlot; 
myLog.... = ....; 

db.Logs.InsertOnSubmit(myLog); 

db.SubmitChanges();