Следующий пример кода отлично работает под SQL Server 2005:
using (TransactionScope ts = new TransactionScope()) {
using (SharedDbConnectionScope scope = new SharedDbConnectionScope()) {
MyTable t = new MyTable();
t.Name = "Test";
t.Comments = "Comments 123";
t.Save();
ts.Complete();
}
}
Но в Oracle 10g выдается ошибка «ORA-02089: COMMIT не разрешен в подчиненном сеансе». Если я только выполняю код внутри блока SharedDbConnectionScope, то все работает хорошо, но, очевидно, я не смогу выполнять операции в транзакции, что может привести к повреждению данных.
Это лишь небольшой пример того, что делает мое настоящее приложение. Я не уверен относительно того, что может быть причиной такого поведения; Кто-нибудь хочет прояснить этот вопрос, пожалуйста?
вот конфиг:
<configSections> <section name="SubSonicService" type="SubSonic.SubSonicSection, SubSonic" requirePermission="false"/> </configSections> <connectionStrings> <add name="OracleConnection" connectionString="Data Source=XE;User Id=test;Password=test;"/> </connectionStrings> <SubSonicService defaultProvider="OracleProvider"> <providers> <clear/> <add name="OracleProvider" type="SubSonic.OracleDataProvider, SubSonic" connectionStringName="OracleConnection" generatedNamespace="OracleTest" /> </providers> </SubSonicService>