I tried the two IsolationLevel allowed by Oracle (ReadCommited and Serializable), none lock the record. Unless, I make another error. When you try this :
Transaction transManager = new Transaction(IsolationLevel.ReadCommitted, "myFristTrans");
MigrationStepsEntity mse = new MigrationStepsEntity();
transManager.Add(mse);
mse.FetchUsingPK(1200);
mse.ErrorCode = 1;
mse.Save();
and that you activate the trace through the app.config file :
<configuration>
[...]
<system.diagnostics>
<switches>
<add name="SqlServerDQE" value="3" />
<add name="AccessDQE" value="4" />
<add name="OracleDQE" value="4" />
<add name="FirebirdDQE" value="4" />
<add name="MySqlDQE" value="4" />
<add name="DB2DQE" value="4" />
<add name="PostgeSqlDQE" value="4" />
<add name="ORMGeneral" value="4" />
<add name="ORMStateManagement" value="4" />
<add name="ORMPersistenceExecution" value="4" />
</switches>
</system.diagnostics>
</configuration>
You will get this output :
Method Enter: TransactionBase.CTor
: Transaction name: myFristTrans. Isolation level: ReadCommitted.
Method Exit: TransactionBase.CTor
'EnsystaImporter.vshost.exe' (Managed): Loaded 'C:\MIS_DEV\DOTNET.1XX\EnsystaIntegrator\VisualStudio\EnsystaImporter\bin\Debug\SD.LLBLGen.Pro.DQE.Oracle10g.NET20.dll', No symbols loaded.
Method Enter: DaoBase.PerformFetchEntityAction
Method Enter: CreateSelectDQ
Method Enter: CreateSelectDQ
Generated Sql query:
Query: SELECT "ENSYSTA_IMPORT"."MIGRATION_STEPS"."MIGRATION_STEP_ID" AS "MigrationStepId", "ENSYSTA_IMPORT"."MIGRATION_STEPS"."DESCRIPTION" AS "Description", "ENSYSTA_IMPORT"."MIGRATION_STEPS"."STEP_CLASS" AS "StepClass", "ENSYSTA_IMPORT"."MIGRATION_STEPS"."STATUS" AS "Status", "ENSYSTA_IMPORT"."MIGRATION_STEPS"."ERROR_CODE" AS "ErrorCode", "ENSYSTA_IMPORT"."MIGRATION_STEPS"."ERROR_MESSAGE" AS "ErrorMessage" FROM "ENSYSTA_IMPORT"."MIGRATION_STEPS" WHERE ( "ENSYSTA_IMPORT"."MIGRATION_STEPS"."MIGRATION_STEP_ID" = :MigrationStepId1)
Parameter: :MigrationStepId1 : Int64. Length: 0. Precision: 0. Scale: 0. Direction: Input. Value: 1200.
Method Exit: CreateSelectDQ
Method Enter: DaoBase.ExecuteSingleRowRetrievalQuery
Executed Sql Query:
Query: SELECT "ENSYSTA_IMPORT"."MIGRATION_STEPS"."MIGRATION_STEP_ID" AS "MigrationStepId", "ENSYSTA_IMPORT"."MIGRATION_STEPS"."DESCRIPTION" AS "Description", "ENSYSTA_IMPORT"."MIGRATION_STEPS"."STEP_CLASS" AS "StepClass", "ENSYSTA_IMPORT"."MIGRATION_STEPS"."STATUS" AS "Status", "ENSYSTA_IMPORT"."MIGRATION_STEPS"."ERROR_CODE" AS "ErrorCode", "ENSYSTA_IMPORT"."MIGRATION_STEPS"."ERROR_MESSAGE" AS "ErrorMessage" FROM "ENSYSTA_IMPORT"."MIGRATION_STEPS" WHERE ( "ENSYSTA_IMPORT"."MIGRATION_STEPS"."MIGRATION_STEP_ID" = :MigrationStepId1)
Parameter: :MigrationStepId1 : Int64. Length: 0. Precision: 0. Scale: 0. Direction: Input. Value: 1200.
If you take a look to the generated queries, you will see that, even a transaction is started, the record is NOT locked.