public static void OpenDatabase(string jetDatabase, Instance jetInstance, bool readOnly) { using (var jetSession = new Session(jetInstance)) { var attachGrbit = AttachDatabaseGrbit.None; if (readOnly) attachGrbit |= AttachDatabaseGrbit.ReadOnly; if (EsentVersion.SupportsWindows7Features) attachGrbit |= Windows7Grbits.EnableAttachDbBackgroundMaintenance; Api.JetAttachDatabase(jetSession, jetDatabase, attachGrbit); var success = false; try { using (var cursor = new EsentChainStateCursor(jetDatabase, jetInstance)) { // reset flush column using (var jetUpdate = cursor.jetSession.BeginUpdate(cursor.flushTableId, JET_prep.Replace)) { Api.SetColumn(cursor.jetSession, cursor.flushTableId, cursor.flushColumnId, 0); jetUpdate.Save(); } } success = true; } finally { if (!success) Api.JetDetachDatabase(jetSession, jetDatabase); } } }
public static void OpenDatabase(string jetDatabase, Instance jetInstance, bool readOnly) { using (var jetSession = new Session(jetInstance)) { var attachGrbit = AttachDatabaseGrbit.None; if (readOnly) { attachGrbit |= AttachDatabaseGrbit.ReadOnly; } if (EsentVersion.SupportsWindows7Features) { attachGrbit |= Windows7Grbits.EnableAttachDbBackgroundMaintenance; } Api.JetAttachDatabase(jetSession, jetDatabase, attachGrbit); var success = false; try { using (var cursor = new EsentChainStateCursor(jetDatabase, jetInstance)) { // reset flush column using (var jetUpdate = cursor.jetSession.BeginUpdate(cursor.flushTableId, JET_prep.Replace)) { Api.SetColumn(cursor.jetSession, cursor.flushTableId, cursor.flushColumnId, 0); jetUpdate.Save(); } } success = true; } finally { if (!success) { Api.JetDetachDatabase(jetSession, jetDatabase); } } } }