Admin.Core/src/platform/ZhonTai.Admin/Core/Db/DBServiceCollectionExtensions.cs
(开头部分) 2KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using FreeSql;
using ZhonTai.Common.Helpers;
using ZhonTai.Admin.Core.Configs;
using ZhonTai.Admin.Core.Auth;
using ZhonTai.Admin.Core.Startup;
using System.Collections.Concurrent;
using System.Reflection;
using ZhonTai.Admin.Core.Db.Transaction;
namespace ZhonTai.Admin.Core.Db;
public static class DBServiceCollectionExtensions
{
/// <summary>
/// 添加数据库
/// </summary>
/// <param name="services"></param>
/// <param name="env"></param>
/// <param name="hostAppOptions"></param>
/// <returns></returns>
public static void AddDb(this IServiceCollection services, IHostEnvironment env, HostAppOptions hostAppOptions)
{
var dbConfig = ConfigHelper.Get<DbConfig>("dbconfig", env.EnvironmentName);
var appConfig = ConfigHelper.Get<AppConfig>("appconfig", env.EnvironmentName);
var user = services.BuildServiceProvider().GetService<IUser>();
var freeSqlCloud = appConfig.DistributeKey.IsNull() ? new FreeSqlCloud() : new FreeSqlCloud(appConfig.DistributeKey);
DbHelper.RegisterDb(freeSqlCloud, user, dbConfig, appConfig, hostAppOptions);
//注册多数据库
if (dbConfig.Dbs?.Length > 0)
{
foreach (var db in dbConfig.Dbs)
{
DbHelper.RegisterDb(freeSqlCloud, user, db, appConfig, null);
}
}
services.AddSingleton<IFreeSql>(freeSqlCloud);
services.AddSingleton(freeSqlCloud);
services.AddScoped<UnitOfWorkManagerCloud>();
//定义基础仓储主库
var fsql = freeSqlCloud.Use(dbConfig.Key);
services.AddSingleton(provider => fsql);
}
/// <summary>
/// 添加TiDb数据库
/// </summary>
/// <param name="_"></param>
/// <param name="context"></param>
/// <param name="version">版本</param>
public static void AddTiDb(this IServiceCollection _, HostAppContext context, string version = "8.0")
{
var dbConfig = ConfigHelper.Get<DbConfig>("dbconfig", context.Environment.EnvironmentName);
var _dicMySqlVersion = typeof(FreeSqlGlobalExtensions).GetField("_dicMySqlVersion", BindingFlags.NonPublic | BindingFlags.Static);
var dicMySqlVersion = new ConcurrentDictionary<string, string>();
dicMySqlVersion[dbConfig.ConnectionString] = version;
_dicMySqlVersion.SetValue(new ConcurrentDictionary<string, string>(), dicMySqlVersion);
后面还有 2 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
