Ejemplo n.º 1
0
        public override DbConnection GetUowWorker(string optionName = null)
        {
            var isCreateNewOne = _worker == null ||
                                 (optionName != _options?.OptionName && _dbTransaction == null);//after commit, the currentTransaction turn to null

            if (isCreateNewOne)
            {
                _worker = _dbFactory.Create(out _options, optionName);
                return(_worker);
            }

            if (optionName != _options?.OptionName)
            {
                try
                {
                    _dbTransaction.Rollback();
                    _worker?.Dispose();
                    _dbTransaction = null;
                    _options       = null;
                }
                catch { }
                throw new DbConnectionUnitOfWorkException($"existing UowWorker {_options?.OptionName} is running, cannot create an new one {optionName}");
            }
            return(_worker);
        }
Ejemplo n.º 2
0
        public DbConnection Create(out DbConOptions options, string optionName = null)
        {
            options = null;
            if (string.IsNullOrEmpty(optionName) || optionName == _options?.OptionName)
            {
                options = _options;
            }
            else if (_multipleOptions != null && _multipleOptions.Any(x => x.OptionName == optionName))
            {
                options = _multipleOptions.FirstOrDefault(x => x.OptionName == optionName);
            }
            if (options == null)
            {
                throw new DbConnectionUnitOfWorkException("Options is null");
            }
            if (string.IsNullOrEmpty(options.DbProviderName))
            {
                throw new DbConnectionUnitOfWorkException("DbProviderName must be specify an value");
            }
            var factory = DbProviderFactories.GetFactory(options.DbProviderName);

            if (null == factory)
            {
                throw new DbConnectionUnitOfWorkException($"DbProvider: {options.DbProviderName} not register in DbProviderFactories");
            }
            var cnn = factory.CreateConnection();

            cnn.ConnectionString = options.ConnectionString;
            return(cnn);
        }
Ejemplo n.º 3
0
 public DbConnectionUnitOfWork(DbConOptions options)
 {
     _options   = options;
     _dbFactory = new DbFactory(_options);
 }
Ejemplo n.º 4
0
 public DbConnectionUnitOfWorkModule(IConfigurationRoot jimuAppSettings) : base(jimuAppSettings)
 {
     _options    = JimuAppSettings.GetSection(typeof(DbConOptions).Name).Get <DbConOptions>();
     _mulOptions = JimuAppSettings.GetSection(typeof(MultipleDbConOptions).Name).Get <MultipleDbConOptions>();
 }
Ejemplo n.º 5
0
 public DbFactory(DbConOptions options)
 {
     _options = options;
 }
Ejemplo n.º 6
0
 public DbFactory(MultipleDbConOptions multipleOptions)
 {
     _multipleOptions = multipleOptions;
     _options         = _multipleOptions.FirstOrDefault(x => x.IsDefaultOption);
 }