RFD, единственный коннект к БД
От: Avos Беларусь  
Дата: 03.11.05 16:06
Оценка:
Добрый день!

Есть такая проблема: хочу использовать RFD в проекте, но необходимо, чтобы существовал единственный коннект к БД (надо для поддержки пессимистических блокировок на уровне БД), который бы открывался при инициализации приложения, а закрывался — при выходе из него.

Пишу такой singleton, который содержит единственный экземпляр класса DbManager:

    public class ConnectionHolder: IDisposable
    {
        #region Variables
        private DbManager _manager;
        #endregion

        #region Singleton

        static readonly ConnectionHolder controllersHolderInstance = new ConnectionHolder();

        public static ConnectionHolder Instance
        {
            get
            {
                return controllersHolderInstance;
            }
        }

        
        #endregion

        private ConnectionHolder()
        {
            _manager = new DbManager(DatabaseConnectionSettings.ConfigurationStringTemplate);
        }

        public DbManager Manager
        {
            get {return _manager;}
        }

        #region IDisposable Members

        void Dispose(bool disposing)
        {
            _manager.Dispose();
        }

        public void Dispose()
        {
            Dispose(true);
            GC.SuppressFinalize(this);
        }

        ~ConnectionHolder()
        {
            Dispose(false);
        }

        #endregion
    }


а использовать хочу, например
                tmp = ConnectionHolder.Instance.Manager.SetSpCommand(
                    SP_GetList).ExecuteList(typeof(DicRow));


при таком варианте использования при закрытии приложения вываливается exception в классе DbManager.cs

An unhandled exception of type 'System.InvalidOperationException' occurred in system.data.dll
Additional information: Handle is not initialized.

в методе Close тут
            if (_connection != null && _closeConnection)
            {
                OnBeforeOperation(OperationType.CloseConnection);
                _connection.Dispose();
                OnAfterOperation (OperationType.CloseConnection);
                _connection = null;
            }


Как правильно использовать RFD в таком случае, чтобы гарантировать, что будет использоваться единственный коннект к БД?

Моя ConnectionString
"User ID={0};Password={1};Data Source={2};Initial Catalog={3};Min Pool Size=3;Max Pool Size=20;"

Заранее спасибо!

Avos
... << RSDN@Home 1.2.0 alpha rev. 616>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.