static DBHelper getDBHelper(DbContext dbContext) { var dbConnection = dbContext.Database.GetDbConnection(); var builder = DBConfigRegister.GetInstance(); builder.RegisterDBAccessBuild(dbLocation => { return(new DBAccessBuild(DBType.MSSQL, dbConnection)); }); var dbConnectionTypeName = dbConnection.GetType().Name; DBType dBType = DBType.MSSQL; switch (dbConnectionTypeName) { case "SqlConnection": dBType = DBType.MSSQL; break; case "MySqlConnection": dBType = DBType.MYSQL; break; case "OracleConnection": dBType = DBType.ORACLE; break; } var dBAccessBuild = new DBAccessBuild(dBType, dbConnection); var helper = DBConfigRegister.GetDBHelper(dBAccessBuild); return(helper); }
static Extensions() { SettingConfig.StringFieldLength = 50; var builder = DBConfigRegister.GetInstance(); builder.UseMySql(); }
internal override DbContextInner GetDbContext() { dbLocation.ManageName = ManageName; var helper = DBConfigRegister.GetDBHelper(dbLocation); var dbContext = new DbContextInner(helper, dbLocation); dbContext.UseSharding = true; return(dbContext); }
DbContextInner getDbContext(string manageName) { var dbLocation = new CRL.DBLocation() { DataAccessType = DataAccessType.Default, ManageType = GetType(), ManageName = manageName }; var helper = DBConfigRegister.GetDBHelper(dbLocation); var dbContext = new DbContextInner(helper, dbLocation); return(dbContext); }
/// <summary> /// 根据数据库类型获取适配器 /// </summary> /// <param name="dbContext"></param> /// <returns></returns> public static DBAdapterBase GetDBAdapterBase(DbContextInner dbContext) { DBAdapterBase db = null; var a = DBAdapterBaseCache.TryGetValue(dbContext.DBHelper.CurrentDBType, out db); if (a) { return(db); } db = DBConfigRegister.GetDBAdapterBase(dbContext); DBAdapterBaseCache.Add(dbContext.DBHelper.CurrentDBType, db); return(db); }
/// <summary> /// 设置定位 /// </summary> public BaseProvider <TModel> SetLocation(TModel args) { var table = TypeCache.GetTable(typeof(TModel)); var func = DBConfigRegister.GetLocation <TModel>(); if (func == null || args == null) { //throw new CRLException($"指定类型{typeof(TModel).Name} 未注册定位方法"); //没有设置则按默认库 return(this); } var location = func(table, args); location.CheckNull("location"); dbLocation.ShardingLocation = location; dbLocation.ShardingLocation.TableName = table.TableName; DBExtend = null; return(this); }
public static LambdaQuery <T> CreateLambdaQuery <T>(DbContextInner _dbContext) where T : class { //var configBuilder = DBConfigRegister.current; var _DBType = _dbContext.DBHelper.CurrentDBType; if (_DBType != DBType.MongoDB) { return(new RelationLambdaQuery <T>(_dbContext)); } var type = typeof(T); var a = mongoQueryCreaters.TryGetValue(type, out object creater); if (!a) { var typeMongo = DBConfigRegister.GetLambdaQueryType(DBType.MongoDB); var genericType = typeMongo.MakeGenericType(typeof(T)); creater = Core.DynamicMethodHelper.CreateCtorFunc <Func <DbContextInner, LambdaQuery <T> > >(genericType, new Type[] { typeof(DbContextInner) }); mongoQueryCreaters.TryAdd(type, creater); } var func = (Func <DbContextInner, LambdaQuery <T> >)creater; return(func(_dbContext)); }