public virtual string GetNameOrConnectionString(ConnectionStringResolveArgs args) { if (args == null) { throw new ArgumentNullException(nameof(args)); } string defaultConnectionString = _configuration.DefaultNameOrConnectionString; if (!string.IsNullOrWhiteSpace(defaultConnectionString)) { return(defaultConnectionString); } if (ConfigurationManager.ConnectionStrings["Default"] != null) { return("Default"); } if (ConfigurationManager.ConnectionStrings.Count == 1) { return(ConfigurationManager.ConnectionStrings[0].ConnectionString); } throw new StoveException("Could not find a connection string definition for the application. Set IStoveStartupConfiguration.DefaultNameOrConnectionString or add a 'Default' connection string to application .config file."); }
public virtual string GetNameOrConnectionString(ConnectionStringResolveArgs args) { if (args == null) { throw new ArgumentNullException("args"); } var defaultConnectionString = _configuration.DefaultNameOrConnectionString; if (!string.IsNullOrWhiteSpace(defaultConnectionString)) { return defaultConnectionString; } if (ConfigurationManager.ConnectionStrings["Default"] != null) { return "Default"; } if (ConfigurationManager.ConnectionStrings.Count == 1) { return ConfigurationManager.ConnectionStrings[0].ConnectionString; } throw new AbpException("Could not find a connection string definition for the application. Set IAbpStartupConfiguration.DefaultNameOrConnectionString or add a 'Default' connection string to application .config file."); }
public virtual TDbContext GetOrCreateDbContext <TDbContext>(MultiTenancySides?multiTenancySide = null) where TDbContext : DbContext { var concreteDbContextType = _dbContextTypeMatcher.GetConcreteType(typeof(TDbContext)); var connectionStringResolveArgs = new ConnectionStringResolveArgs(multiTenancySide); connectionStringResolveArgs["DbContextType"] = typeof(TDbContext); connectionStringResolveArgs["DbContextConcreteType"] = concreteDbContextType; var connectionString = ResolveConnectionString(connectionStringResolveArgs); var dbContextKey = concreteDbContextType.FullName + "#" + connectionString; DbContext dbContext; if (!ActiveDbContexts.TryGetValue(dbContextKey, out dbContext)) { dbContext = _dbContextResolver.Resolve <TDbContext>(connectionString); //TODO: Object materialize event //TODO: Apply current filters to this dbcontext if (Options.IsTransactional == true) { BeginTransaction(dbContext); } ActiveDbContexts[dbContextKey] = dbContext; } return((TDbContext)dbContext); }
public virtual void CreateOrMigrate(Action <string> logger) { var args = new ConnectionStringResolveArgs { ["DbContextType"] = typeof(TDbContext), ["DbContextConcreteType"] = typeof(TDbContext) }; string nameOrConnectionString = ConnectionStringHelper.GetConnectionString( _connectionStringResolver.GetNameOrConnectionString(args) ); logger($"Name or ConnectionString: {nameOrConnectionString}\nCurrent DbContext: {typeof(TDbContext).GetTypeInfo().Name}"); using (IUnitOfWorkCompleteHandle uow = _unitOfWorkManager.Begin(new UnitOfWorkOptions { Timeout = TimeSpan.FromSeconds(_configuration.TransactionTimeout) }) ) { _migrationStrategies.ForEach(strategy => { logger("--------------------------------------------------------"); strategy.Migrate <TDbContext, TConfiguration>(nameOrConnectionString, MigrationAssembly, logger); }); _unitOfWorkManager.Current.SaveChanges(); uow.Complete(); } }
/// <summary> /// 获取或创建数据库上下文 /// </summary> /// <typeparam name="TDbContext">数据库上下文对象</typeparam> /// <param name="multiTenancySide">多租户双方中的一方</param> /// <returns>数据库上下文对象</returns> public virtual TDbContext GetOrCreateDbContext <TDbContext>(MultiTenancySides?multiTenancySide = null) where TDbContext : DbContext { var concreteDbContextType = _dbContextTypeMatcher.GetConcreteType(typeof(TDbContext)); var connectionStringResolveArgs = new ConnectionStringResolveArgs(multiTenancySide); connectionStringResolveArgs["DbContextType"] = typeof(TDbContext); connectionStringResolveArgs["DbContextConcreteType"] = concreteDbContextType; var connectionString = ResolveConnectionString(connectionStringResolveArgs); var dbContextKey = concreteDbContextType.FullName + "#" + connectionString; DbContext dbContext; if (!ActiveDbContexts.TryGetValue(dbContextKey, out dbContext)) { dbContext = _dbContextResolver.Resolve <TDbContext>(connectionString); ((IObjectContextAdapter)dbContext).ObjectContext.ObjectMaterialized += (sender, args) => { ObjectContext_ObjectMaterialized(dbContext, args); }; FilterExecuter.As <IEfUnitOfWorkFilterExecuter>().ApplyCurrentFilters(this, dbContext); ActiveDbContexts[dbContextKey] = dbContext; } return((TDbContext)dbContext); }
public virtual TDbContext GetOrCreateDbContext <TDbContext>() where TDbContext : DbContext { Type concreteDbContextType = _dbContextTypeMatcher.GetConcreteType(typeof(TDbContext)); var connectionStringResolveArgs = new ConnectionStringResolveArgs(); connectionStringResolveArgs["DbContextType"] = typeof(TDbContext); connectionStringResolveArgs["DbContextConcreteType"] = concreteDbContextType; string connectionString = ResolveConnectionString(connectionStringResolveArgs); string dbContextKey = concreteDbContextType.FullName + "#" + connectionString; DbContext dbContext; if (!ActiveDbContexts.TryGetValue(dbContextKey, out dbContext)) { if (Options.IsTransactional == true) { dbContext = _transactionStrategy.CreateDbContext <TDbContext>(connectionString, _dbContextResolver); } else { dbContext = _dbContextResolver.Resolve <TDbContext>(connectionString); } ((IObjectContextAdapter)dbContext).ObjectContext.ObjectMaterialized += (sender, args) => { ObjectContext_ObjectMaterialized(dbContext, args); }; FilterExecuter.As <IEfUnitOfWorkFilterExecuter>().ApplyCurrentFilters(this, dbContext); ActiveDbContexts[dbContextKey] = dbContext; } return((TDbContext)dbContext); }
public override string GetNameOrConnectionString(ConnectionStringResolveArgs args) { var configuration = AppConfigurations.Get(_env.ContentRootPath, _env.EnvironmentName); var connectionString = AppConfigurations.GetConnectionString(args["DbContextType"]?.ToString(), configuration); return(connectionString); }
public override string GetNameOrConnectionString(ConnectionStringResolveArgs args) { if (args.MultiTenancySide == MultiTenancySides.Host) { return(GetNameOrConnectionString(new DbPerTenantConnectionStringResolveArgs(null, args))); } return(GetNameOrConnectionString(new DbPerTenantConnectionStringResolveArgs(GetCurrentTenantId(), args))); }
public override string GetNameOrConnectionString(ConnectionStringResolveArgs args) { if (args.MultiTenancySide == MultiTenancySides.Host) { return GetNameOrConnectionString(new DbPerTenantConnectionStringResolveArgs(null, args)); } return GetNameOrConnectionString(new DbPerTenantConnectionStringResolveArgs(GetCurrentTenantId(), args)); }
public virtual TDbContext GetOrCreateDbContext <TDbContext>(MultiTenancySides?multiTenancySide = null) where TDbContext : DbContext { var concreteDbContextType = _dbContextTypeMatcher.GetConcreteType(typeof(TDbContext)); var connectionStringResolveArgs = new ConnectionStringResolveArgs(multiTenancySide); connectionStringResolveArgs["DbContextType"] = typeof(TDbContext); connectionStringResolveArgs["DbContextConcreteType"] = concreteDbContextType; var connectionString = ResolveConnectionString(connectionStringResolveArgs); var dbContextKey = concreteDbContextType.FullName + "#" + connectionString; DbContext dbContext; if (!ActiveDbContexts.TryGetValue(dbContextKey, out dbContext)) { dbContext = _dbContextResolver.Resolve <TDbContext>(connectionString); //((IObjectContextAdapter)dbContext).ObjectContext.ObjectMaterialized += (sender, args) => //{ // ObjectContext_ObjectMaterialized(dbContext, args); //}; //foreach (var filter in Filters) //{ // if (filter.IsEnabled) // { // dbContext.EnableFilter(filter.FilterName); // } // else // { // dbContext.DisableFilter(filter.FilterName); // } // foreach (var filterParameter in filter.FilterParameters) // { // if (TypeHelper.IsFunc<object>(filterParameter.Value)) // { // dbContext.SetFilterScopedParameterValue(filter.FilterName, filterParameter.Key, (Func<object>)filterParameter.Value); // } // else // { // dbContext.SetFilterScopedParameterValue(filter.FilterName, filterParameter.Key, filterParameter.Value); // } // } //} if (Options.IsTransactional == true) { BeginTransaction(dbContext); } ActiveDbContexts[dbContextKey] = dbContext; } return((TDbContext)dbContext); }
public override async Task <string> GetNameOrConnectionStringAsync(ConnectionStringResolveArgs args) { if (args.MultiTenancySide == MultiTenancySides.Host) { return(await GetNameOrConnectionStringAsync(new DbPerTenantConnectionStringResolveArgs(null, args))); } return(await GetNameOrConnectionStringAsync(new DbPerTenantConnectionStringResolveArgs(GetCurrentTenantId(), args))); }
public override string GetNameOrConnectionString(ConnectionStringResolveArgs args) { if (args["DbContextConcreteType"] as Type == typeof(TEST1Context)) { return("Server=localhost; Database=TEST1; Trusted_Connection=True;"); } return(base.GetNameOrConnectionString(args)); }
private string GetConnectionStringName(ConnectionStringResolveArgs args) { //var type = args["DbContextConcreteType"] as Type; //if (type == typeof(MASTERDATADbContext)) //{ // return DxpConsts.MDConnectionString;//返回数据库二的节点名称 //} return(null);//采用默认数据库 }
public override string GetNameOrConnectionString(ConnectionStringResolveArgs args) { if (args["DbContextConcreteType"] as Type == typeof(SDIMDbContext)) { return(_appConfiguration.GetConnectionString(SMICConsts.SDIMConnectionStringName)); } return(base.GetNameOrConnectionString(args)); }
public override string GetNameOrConnectionString(ConnectionStringResolveArgs args) { if (args["DbContextConcreteType"] as Type == typeof(MultipleDbContextEfCoreDemoSecondDbContext)) { return(_appConfiguration.GetConnectionString(MultipleDbContextEfCoreDemoConsts.SecondDbConnectionStringName)); } return(base.GetNameOrConnectionString(args)); }
public string GetNameOrConnectionString(ConnectionStringResolveArgs args) { if (_configuration.TypedConnectionStrings.TryGetValue((Type)args["SessionContextType"], out string connectionString)) { return(connectionString); } throw new StoveException("Could not find StoveSessionContextType to resolve connection string!"); }
public override string GetNameOrConnectionString(ConnectionStringResolveArgs args) { var connectStringName = GetConnectionStringName(args); if (connectStringName != null) { return(_root.GetConnectionString(connectStringName)); } return(base.GetNameOrConnectionString(args)); }
public DbPerTenantConnectionStringResolveArgs(int?tenantId, ConnectionStringResolveArgs baseArgs) { TenantId = tenantId; MultiTenancySide = baseArgs.MultiTenancySide; foreach (var kvPair in baseArgs) { Add(kvPair.Key, kvPair.Value); } }
public override string GetNameOrConnectionString(ConnectionStringResolveArgs args) { if (args["DbContextConcreteType"] as Type == typeof(SecondDbContext)) { var configuration = AppConfigurations.Get(WebContentDirectoryFinder.CalculateContentRootFolder()); return(configuration.GetConnectionString(MultipleDbContextEfCoreDemoConsts.SecondDbConnectionStringName)); } return(base.GetNameOrConnectionString(args)); }
public DbPerTenantConnectionStringResolveArgs(int? tenantId, ConnectionStringResolveArgs baseArgs) { TenantId = tenantId; MultiTenancySide = baseArgs.MultiTenancySide; foreach (var kvPair in baseArgs) { Add(kvPair.Key, kvPair.Value); } }
/// <summary> /// 获取连接字符串 /// </summary> /// <param name="args"></param> /// <returns></returns> public string GetNameOrConnectionString(ConnectionStringResolveArgs args) { //if (!args.ContainsKey(DbContextTypeKey)) // return _config.DefaultNameOrConnectionString; //var dbContextType = args[DbContextTypeKey] as Type; //if (dbContextType != null && _dbContextMapper.ContainsKey(dbContextType)) // return _dbConnectionStringResolver.ResolveConnectionString(_dbContextMapper[dbContextType]); //return _dbConnectionStringResolver.ResolveConnectionString(DbConfigType.Identity); return(@"data source=(localdb)\MSSQLLocalDB;initial catalog=CockQuartz;Integrated Security=True;MultipleActiveResultSets=True;App=EntityFramework"); }
public virtual string GetNameOrConnectionString(ConnectionStringResolveArgs args) { string defaultNameOrConnectionString = _configuration.DefaultSettings.GetDefaultNameOrConnectionString(); if (!string.IsNullOrWhiteSpace(defaultNameOrConnectionString)) { return(defaultNameOrConnectionString); } return(defaultNameOrConnectionString); }
private string GetConnectionStringName(ConnectionStringResolveArgs args) { var type = args["DbContextConcreteType"] as Type; if (dbConnectionStrings.ContainsKey(type)) { return(dbConnectionStrings[type]); } return(null); }
private string GetConnectionStringName(ConnectionStringResolveArgs args) { var type = args["DbContextConcreteType"] as Type; if (type == typeof(TaobaoAuthorizedDbContext)) { return(TaobaoAuthorizationConsts.AuthorizedConnectionStringName); } return(null); }
public override string GetNameOrConnectionString(ConnectionStringResolveArgs args) { if (args["DbContextConcreteType"] as Type == typeof(AuditLogDbContext)) { var configuration = AppConfigurations.Get(WebContentDirectoryFinder.CalculateContentRootFolder()); return(configuration.GetConnectionString(MetroStationConsts.AuditLogConnectionStringName)); } return(base.GetNameOrConnectionString(args)); }
public override string GetNameOrConnectionString(ConnectionStringResolveArgs args) { var connectString = string.Empty; if (dicConnection.TryGetValue(args["DbContextConcreteType"] as Type, out connectString)) { return(connectString); } return(base.GetNameOrConnectionString(args)); }
public override string GetNameOrConnectionString(ConnectionStringResolveArgs args) { var type = args["DbContextConcreteType"] as Type; if (type == typeof(DIME2BarcodeContext)) { return(ConfigurationManager.ConnectionStrings["DIME2BarcodeContainer"].ConnectionString); } return(base.GetNameOrConnectionString(args)); }
public override string GetNameOrConnectionString(ConnectionStringResolveArgs args) { var connectStringName = this.GetConnectionStringName(args); if (connectStringName != null) { var configuration = AppConfigurations.Get(WebContentDirectoryFinder.CalculateContentRootFolder(), _env.EnvironmentName, _env.IsDevelopment()); return(configuration.GetConnectionString(connectStringName)); } return(base.GetNameOrConnectionString(args)); }
public TDbContext GetDbContext <TDbContext>() where TDbContext : DbContext { var connectionStringResolveArgs = new ConnectionStringResolveArgs() //MultiTenancySides { ["DbContextType"] = typeof(TDbContext) }; var connectionString = _connectionStringResolver.GetNameOrConnectionString(connectionStringResolveArgs); return(_dbContextResolver.Resolve <TDbContext>(connectionString, null)); }
public override string GetNameOrConnectionString(ConnectionStringResolveArgs args) { var type = args["DbContextConcreteType"] as Type; if (type == typeof(Dime2barcodeContext)) { var configuration = AppConfigurations.Get(WebContentDirectoryFinder.CalculateContentRootFolder()); return(configuration.GetConnectionString("DIME2Barcode")); } return(base.GetNameOrConnectionString(args)); }
public virtual string GetNameOrConnectionString(ConnectionStringResolveArgs args) { Throw.IfArgumentNull(args, nameof(args)); var defaultConnectionString = _configuration.DefaultNameOrConnectionString; if (!string.IsNullOrWhiteSpace(defaultConnectionString)) { return(defaultConnectionString); } throw new AppException("Could not find a connection string definition for the application. Set IConfigure.DefaultNameOrConnectionString or add a 'Default' connection string to application .config file."); }
public virtual TDbContext GetOrCreateDbContext <TDbContext>(MultiTenancySides?multiTenancySide = null, string name = null) where TDbContext : DbContext { var concreteDbContextType = _dbContextTypeMatcher.GetConcreteType(typeof(TDbContext)); var connectionStringResolveArgs = new ConnectionStringResolveArgs(multiTenancySide); connectionStringResolveArgs["DbContextType"] = typeof(TDbContext); connectionStringResolveArgs["DbContextConcreteType"] = concreteDbContextType; var connectionString = ResolveConnectionString(connectionStringResolveArgs); var dbContextKey = concreteDbContextType.FullName + "#" + connectionString; if (name != null) { dbContextKey += "#" + name; } DbContext dbContext; if (!ActiveDbContexts.TryGetValue(dbContextKey, out dbContext)) { if (Options.IsTransactional == true) { dbContext = _transactionStrategy.CreateDbContext <TDbContext>(connectionString, _dbContextResolver); } else { dbContext = _dbContextResolver.Resolve <TDbContext>(connectionString); } if (Options.Timeout.HasValue && !dbContext.Database.CommandTimeout.HasValue) { dbContext.Database.CommandTimeout = Options.Timeout.Value.TotalSeconds.To <int>(); } if (Clock.SupportsMultipleTimezone) { ((IObjectContextAdapter)dbContext).ObjectContext.ObjectMaterialized += (sender, args) => { ObjectContext_ObjectMaterialized(dbContext, args); }; } FilterExecuter.As <IEfUnitOfWorkFilterExecuter>().ApplyCurrentFilters(this, dbContext); ActiveDbContexts[dbContextKey] = dbContext; } return((TDbContext)dbContext); }
public virtual TDbContext GetOrCreateDbContext <TDbContext>(MultiTenancySides?multiTenancySide = null) where TDbContext : DbContext { var connectionStringResolveArgs = new ConnectionStringResolveArgs(multiTenancySide); connectionStringResolveArgs["DbContextType"] = typeof(TDbContext); var connectionString = ResolveConnectionString(connectionStringResolveArgs); var dbContextKey = typeof(TDbContext).FullName + "#" + connectionString; DbContext dbContext; if (!ActiveDbContexts.TryGetValue(dbContextKey, out dbContext)) { dbContext = _dbContextResolver.Resolve <TDbContext>(connectionString); ((IObjectContextAdapter)dbContext).ObjectContext.ObjectMaterialized += (sender, args) => { ObjectContext_ObjectMaterialized(dbContext, args); }; foreach (var filter in Filters) { if (filter.IsEnabled) { dbContext.EnableFilter(filter.FilterName); } else { dbContext.DisableFilter(filter.FilterName); } foreach (var filterParameter in filter.FilterParameters) { if (TypeHelper.IsFunc <object>(filterParameter.Value)) { dbContext.SetFilterScopedParameterValue(filter.FilterName, filterParameter.Key, (Func <object>)filterParameter.Value); } else { dbContext.SetFilterScopedParameterValue(filter.FilterName, filterParameter.Key, filterParameter.Value); } } } ActiveDbContexts[dbContextKey] = dbContext; } return((TDbContext)dbContext); }
protected virtual string ResolveConnectionString(ConnectionStringResolveArgs args) { return ConnectionStringResolver.GetNameOrConnectionString(args); }