HuanMengProject/src/0-core/HuanMeng.MiaoYu.Code/MultiTenantUtil/MiaoYuMultiTenantExtension.cs
2024-09-03 16:41:35 +08:00

73 lines
2.5 KiB
C#

using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Builder;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Configuration;
using HuanMeng.DotNetCore.MultiTenant;
using HuanMeng.MiaoYu.Model.DbSqlServer.Db_MiaoYu;
using Microsoft.EntityFrameworkCore;
using HuanMeng.DotNetCore.MultiTenant.Contract;
namespace HuanMeng.MiaoYu.Code.MultiTenantUtil
{
/// <summary>
/// 多租户扩展
/// </summary>
public static class MiaoYuMultiTenantExtension
{
/// <summary>
/// 多租户IServiceCollection扩展
/// </summary>
/// <param name="serviceCollection"></param>
public static void AddMultiTenantMiaoYu(this IHostApplicationBuilder builder)
{
//初始学生数据库
string MiaoYu_SqlServer_Db = builder.Configuration.GetConnectionString("MiaoYu_SqlServer_Db") ?? "";
MiaoYuMultiTenantConfig miaoYuMultiTenantConfig = new MiaoYuMultiTenantConfig(MiaoYu_SqlServer_Db); builder.Services.AddSingleton<MiaoYuMultiTenantConfig>(miaoYuMultiTenantConfig);
//添加单个租户的配置项
builder.Services.AddScoped<ITenantInfo, TenantInfo>();
//添加系统数据库
builder.Services.AddDbContext<MiaoYuContext>((serviceProvider, options) =>
{
var m = serviceProvider.GetRequiredService<ITenantInfo>();
string sunnySportConnectionString = "";
if (m != null)
{
sunnySportConnectionString = m.ConnectionString ?? MiaoYu_SqlServer_Db;
}
if (string.IsNullOrEmpty(sunnySportConnectionString))
{
sunnySportConnectionString = MiaoYu_SqlServer_Db;
}
options
.UseSqlServer(sunnySportConnectionString);
//
//options.UseSqlServer
}, ServiceLifetime.Scoped);
}
/// <summary>
/// 多租户IApplicationBuilder扩展
/// </summary>
/// <param name="app"></param>
/// <returns></returns>
public static IApplicationBuilder UseMultiTenantMiaoYu(this IApplicationBuilder app)
{
return app.UseMiddleware<MiaoYuMultiTenantTenantMiddleware>();
}
}
}