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); }
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); }
public DbConnectionUnitOfWork(DbConOptions options) { _options = options; _dbFactory = new DbFactory(_options); }
public DbConnectionUnitOfWorkModule(IConfigurationRoot jimuAppSettings) : base(jimuAppSettings) { _options = JimuAppSettings.GetSection(typeof(DbConOptions).Name).Get <DbConOptions>(); _mulOptions = JimuAppSettings.GetSection(typeof(MultipleDbConOptions).Name).Get <MultipleDbConOptions>(); }
public DbFactory(DbConOptions options) { _options = options; }
public DbFactory(MultipleDbConOptions multipleOptions) { _multipleOptions = multipleOptions; _options = _multipleOptions.FirstOrDefault(x => x.IsDefaultOption); }