Я не могу найти это на своем сайте или здесь. Я надеюсь, что ответ будет ДА. В частности, я хочу написать Verifier для проверки уникальных нарушений ключа (я знаю, что мне нужно будет повысить уровень изоляции до Serializable). Это не будет работать, если верификатор работает в той же транзакции, что и «Сохранить».Использует ли DevForce ту же транзакцию для проверки и сохранения
1
A
ответ
1
DevForce не использует ту же транзакцию для проверки и сохранения обработки. В контексте EntityServerSaveInterceptor выполняются авторизация и валидация, и при выполнении фактического сохранения открывается TransactionScope. Если вы выполните запрос в верификаторе, он будет использовать отдельный TransactionScope.
Вы можете обойти это поведение с небольшой дополнительной работой в своем пользовательском EntityServerSaveInterceptor. Переопределите функцию ValidateSave для обхода проверки, затем переопределите метод ExecuteSave, чтобы открыть TransactionScope, а затем выполните свою логику проверки перед вызовом логики сохранения базы. TransactionScope, открытый DF во время сохранения, закроется в вашем TransactionScope. Что-то вроде этого:
public class EntityServerSaveManager : EntityServerSaveInterceptor {
protected override bool ValidateSave() {
// will do validation later
return true;
}
protected override bool ExecuteSave() {
using (var ts = new TransactionScope(TransactionScopeOption.Required, this.SaveOptions.TransactionSettings.ToTransactionOptions())) {
// Do validation logic now
...
// Now do save
base.ExecuteSave();
ts.Complete();
}
}
}
Смежные вопросы
- 1. Использует ли `substr` ту же основную память?
- 2. Как я могу использовать ту же транзакцию весной и EJB?
- 3. Hibernate PostInsertEventListeners-Использовать ту же транзакцию, что и вставка?
- 4. JPA вставить родительские и дочерние объекты в ту же транзакцию
- 5. SKPaymentQueue restoreCompletedTransactions восстанавливает одну и ту же транзакцию несколько раз
- 6. Minitest spec, используя ту же транзакцию db для группы тестов
- 7. Использовать транзакцию для нескольких сохранения
- 8. Qt использует ту же модель для QListView и QTableView
- 9. ServiceStack использует одну и ту же «модель» для нескольких сервисов
- 10. NHibernate Linq использует неявную транзакцию?
- 11. Использует ли несколько #define одной и той же строки одну и ту же константу?
- 12. Использует ли DDL для создания временных таблиц Oracle транзакцию?
- 13. Nhibernate две транзакции чтения и ту же таблицу и вставить одну таблицу сделать одну транзакцию неудачу
- 14. SoapUI (Ready! API) использует ту же HTTP-авторизацию для прокси
- 15. Codeigniter использует ту же модель для разных проектов
- 16. Используйте ту же часть строки для проверки регулярных выражений
- 17. Пользовательский верификатор на DevForce 2012
- 18. Несколько единиц сохранения JPA, указывающих на ту же базу данных?
- 19. gsp форма проверки и подачи для сохранения
- 20. Запрещается ли начинать() ту же транзакцию после ее совершения (повторное использование транзакции)?
- 21. , вызывающий ту же активность, что и для
- 22. Как узнать, использует ли мой iPad и iOS Simulator ту же учетную запись iCloud?
- 23. Как перенаправить на ту же вкладку после нажатия кнопки сохранения
- 24. Все ли GPU используют одну и ту же архитектуру?
- 25. Как я могу использовать одну и ту же транзакцию через шаги в Camel?
- 26. Можно ли подключить транзакцию к клиенту без сохранения карты?
- 27. Использует ли использование() {...} в C# ту же цель, что и autoreleasepool {...} в Cocoa?
- 28. Использует ли по умолчанию MVC-безопасность ту же безопасность, что и ASP.NEt
- 29. Как использовать ту же самую базу данных и одну и ту же программу для двух разных локалей в .NET.
- 30. Пользователь Sudo не использует ту же версию узла
Так как часть «Теперь ли логика проверки», после выполнения моей собственной проверки, я бы назвал base.ValidateSave()? Если я напишу UniqueVerifier, будет ли теперь логика проверки правильности быть только вызовом base.ValidateSave()? – jbiddle
Ваши верификаторы экземпляров будут вызываться автоматически базой. ValidateSave, поэтому вы можете просто вызвать base.ValidateSave в вашем TransactionScope. –
Когда я пытаюсь это сделать, я получаю следующее исключение: транзакция, указанная для TransactionScope, имеет другое значение IsolationLevel, чем значение, запрашиваемое для области. Как установить диспетчера сущностей DefaultSaveOptions для ВСЕХ как на клиенте, так и на сервере. Я использую Коктейль, если это имеет значение. – jbiddle