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);
                }
            }
        }
示例#2
0
        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);
                }
            }
        }