/// <summary>
        /// 使用EFCoreSharding
        /// </summary>
        /// <param name="services">服务集合</param>
        /// <param name="configInit">分表配置项</param>
        /// <returns></returns>
        public static IServiceCollection UseEFCoreSharding(this IServiceCollection services, Action <IConfigInit> configInit)
        {
            if (ServiceDescriptors == null)
            {
                ServiceDescriptors = services;
            }
            if (configInit != null)
            {
                Init(configInit);
            }

            services.AddScoped(_ =>
            {
                return(DbFactory.GetShardingDbAccessor());
            });

            return(services);
        }
Exemple #2
0
        /// <summary>
        /// 转为Sharding
        /// </summary>
        /// <typeparam name="T">实体泛型</typeparam>
        /// <param name="source">数据源</param>
        /// <param name="absDbName">抽象数据库</param>
        /// <returns>IShardingQueryable</returns>
        public static IShardingQueryable <T> ToSharding <T>(this IQueryable <T> source, string absDbName = ShardingConfig.DefaultAbsDbName) where T : class, new()
        {
            ShardingConfig.CheckInit();

            return(new ShardingQueryable <T>(source, DbFactory.GetShardingDbAccessor(absDbName) as ShardingDbAccessor, absDbName));
        }