73 lines
2.5 KiB
C#
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>();
|
|
}
|
|
}
|
|
}
|