internal override DbContextInner GetDbContext() { dbLocation.ManageName = ManageName; var helper = DBConfigRegister.GetDBHelper(dbLocation); var dbContext = new DbContextInner(helper, dbLocation); return(dbContext); }
internal AbsDBExtend copyDBExtend() { var helper = DBConfigRegister.GetDBHelper(dbContext.DBLocation); var dbContext2 = new DbContextInner(helper, dbContext.DBLocation); //dbContext2.ShardingMainDataIndex = dbContext.ShardingMainDataIndex; dbContext2.UseSharding = dbContext.UseSharding; return(DBExtendFactory.CreateDBExtend(dbContext2)); }
internal static DBAdapterBase GetDBAdapterBase(DbContextInner dbContext) { var configBuilder = instance; var exists = configBuilder.DBAdapterBaseRegister.TryGetValue(dbContext.DBHelper.CurrentDBType, out var func); if (!exists) { throw new Exception("找不到对应的DBAdapte" + dbContext.DBHelper.CurrentDBType); } return(func(dbContext)); }
/// <summary> /// 构造DBExtend /// </summary> /// <param name="_dbContext"></param> public AbsDBExtend(DbContextInner _dbContext) { dbContext = _dbContext; var _helper = _dbContext.DBHelper; if (_helper == null) { throw new Exception("数据访问对象未实例化,请实现CRL.SettingConfig.GetDbAccess"); } GUID = Guid.NewGuid(); __DbHelper = _helper; }
public static string GetTableName(string tableName, DbContextInner dbContext) { if (dbContext != null && dbContext.UseSharding) { if (dbContext.DBLocation.ShardingLocation != null) {//没有设置定位,则找默认库 var location = dbContext.DBLocation.ShardingLocation; tableName = location.TablePartName; } } return(tableName); }
internal static AbsDBExtend CreateDBExtend(DbContextInner _dbContext) { var configBuilder = instance; var dbType = _dbContext.DBHelper.CurrentDBType; if (_dbContext.DataBaseArchitecture == DataBaseArchitecture.Relation) { return(new DBExtend.RelationDB.DBExtend(_dbContext)); } var a = configBuilder.AbsDBExtendRegister.TryGetValue(dbType, out Func <DbContextInner, AbsDBExtend> func); if (!a) { throw new Exception($"未找到AbsDBExtend {dbType}"); } return(func(_dbContext)); }
/// <summary> /// SQL语句转换为存储过程 /// </summary> /// <param name="template"></param> /// <param name="dbContext"></param> /// <param name="sql"></param> /// <param name="procedureName"></param> /// <param name="templateParame"></param> /// <returns></returns> internal static string SqlToProcedure(string template, DbContextInner dbContext, string sql, string procedureName, Dictionary <string, string> templateParame = null) { var adpater = DBAdapter.DBAdapterBase.GetDBAdapterBase(dbContext); template = template.Trim(); Regex r = new Regex(@"\@(\w+)", RegexOptions.IgnoreCase);//like @parame Match m; List <string> pars = new List <string>(); for (m = r.Match(sql); m.Success; m = m.NextMatch()) { string par = m.Groups[1].ToString(); if (!pars.Contains(par)) { pars.Add(par); } } //string template = Properties.Resources.pageTemplate.Trim(); sql = sql.Replace("'", "''");//单引号过滤 template = template.Replace("{name}", procedureName); template = template.Replace("{sql}", sql); string parames = ""; //构造参数 if (dbContext.DBHelper.Params != null) { foreach (var p in dbContext.DBHelper.Params) { string key = p.Key.Replace("@", ""); var t = p.Value.GetType(); var par = adpater.GetDBColumnType(t); if (t == typeof(System.String)) { par = string.Format(par, 500); } parames += adpater.SpParameFormat(key, par, false); } } if (dbContext.DBHelper.OutParams != null) { foreach (var p in dbContext.DBHelper.OutParams) { string key = p.Key; var t = p.Value.GetType(); var par = adpater.GetDBColumnType(t); parames += adpater.SpParameFormat(key, par, true); } } if (parames.Length > 0) { parames = "(" + parames.Substring(0, parames.Length - 1) + ")"; } template = template.Replace("{parame}", parames); if (templateParame != null) { foreach (var item in templateParame) { var value = item.Value; value = value.Replace("'", "''");//单引号过滤 template = template.Replace("{" + item.Key + "}", value); } } template = adpater.GetCreateSpScript(procedureName, template); return(template); }
public static AbsDBExtend CreateDBExtend(DbContextInner _dbContext) { return(DBConfigRegister.CreateDBExtend(_dbContext)); }
/// <summary> /// 根据类型返回表名 /// 如果设置了分表,返回分表名 /// </summary> /// <param name="type"></param> /// <param name="dbContext"></param> /// <returns></returns> public static string GetTableName(Type type, DbContextInner dbContext) { var tableName = GetTable(type).TableName; return(GetTableName(tableName, dbContext)); }