Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        static Extensions()
        {
            SettingConfig.StringFieldLength = 50;
            var builder = DBConfigRegister.GetInstance();

            builder.UseMySql();
        }
Exemplo n.º 3
0
        internal override DbContextInner GetDbContext()
        {
            dbLocation.ManageName = ManageName;
            var helper    = DBConfigRegister.GetDBHelper(dbLocation);
            var dbContext = new DbContextInner(helper, dbLocation);

            dbContext.UseSharding = true;
            return(dbContext);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        /// <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);
        }
Exemplo n.º 6
0
        /// <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);
        }
Exemplo n.º 7
0
        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));
        }