public void Open(string connectionString) { if (_EseInstance == null) { if (string.IsNullOrWhiteSpace(connectionString)) { connectionString = ApplicationFolderHelper.ApplicationFolderName; } this._DatabasePath = Path.Combine(connectionString, Path.ChangeExtension(_DatabaseName, _StorageEngineBaseName)); _EseInstance = new Instance(_DatabaseName); _EseInstance.Parameters.CreatePathIfNotExist = true; _EseInstance.Parameters.CircularLog = true; _EseInstance.Parameters.Recovery = true; _EseInstance.Parameters.BaseName = _StorageEngineBaseName; _EseInstance.Parameters.MaxSessions = _ConnectionPoolSize * 2; _EseInstance.Parameters.NoInformationEvent = true; if (!string.IsNullOrEmpty(connectionString)) { _EseInstance.Parameters.SystemDirectory = connectionString; _EseInstance.Parameters.LogFileDirectory = connectionString; _EseInstance.Parameters.TempDirectory = connectionString; _EseInstance.Parameters.AlternateDatabaseRecoveryDirectory = connectionString; } InitGrbit grbit = default(InitGrbit); if (EsentVersion.SupportsWindows7Features) { grbit = Windows7Grbits.ReplayIgnoreLostLogs; } else { grbit = InitGrbit.None; } _EseInstance.Init(grbit); _ConnectionPool = new EseConnectionPool(_EseInstance, _DatabasePath, _ConnectionPoolSize); EseConnection connection = _ConnectionPool.OpenConnection(); try { using (connection.GetTable(_TableNameCallbacks, OpenTableGrbit.ReadOnly)) { } } catch (EsentErrorException eeex) { if (eeex.Error == JET_err.ObjectNotFound) { CreateTaskTable(connection); } else { throw; } } finally { _ConnectionPool.CloseConnection(connection); } } }