src/Hx.IdentityServer.Model/Data/SeedData.cs

(开头部分) 9KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using IdentityServer4.EntityFramework.DbContexts;
using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Security.Claims;
using IdentityModel;
using IdentityServer4.EntityFramework.Mappers;
using Hx.IdentityServer.Data;
using Hx.IdentityServer.Model;
using Hx.IdentityServer.Entity;
using Hx.IdentityServer.Common;

namespace Hx.IdentityServer.Data
{
    /// <summary>
    /// 种子
    /// </summary>
    public class SeedData
    {
        public static void EnsureSeedData(IServiceProvider serviceProvider)
        {
            //迁移,在解决方案文件路径中执行迁移,指定启动项目,和迁移项目
            //dotnet ef -s src/Hx.IdentityServer -p src/Hx.IdentityServer.Model migrations add InitApplicationDb -c ApplicationDbContext
            //  dotnet ef -s src/Hx.IdentityServer -p src/Hx.IdentityServer.Model migrations remove -c ApplicationDbContext
            // dotnet ef -s src/Hx.IdentityServer -p src/Hx.IdentityServer.Model migrations add InitPersistedGrantDb -c PersistedGrantDbContext -o Migrations/IdentityServer/PersistedGrantDb
            // dotnet ef -s src/Hx.IdentityServer -p src/Hx.IdentityServer.Model migrations remove -c PersistedGrantDbContext
            // dotnet ef -s src/Hx.IdentityServer -p src/Hx.IdentityServer.Model migrations add InitConfigurationDb -c ConfigurationDbContext -o Migrations/IdentityServer/ConfigurationDb
            // dotnet ef -s src/Hx.IdentityServer -p src/Hx.IdentityServer.Model migrations remove -c ConfigurationDbContext
            ConsoleHelper.WriteInfoLine("Seeding database...");
            using (var scope = serviceProvider.GetRequiredService<IServiceScopeFactory>().CreateScope())
            {
               
                {
                    scope.ServiceProvider.GetRequiredService<PersistedGrantDbContext>().Database.Migrate();
                    var context = scope.ServiceProvider.GetRequiredService<ConfigurationDbContext>();
                    context.Database.Migrate();
                    EnsureSeedData(context);
                }

                {
                    var context = scope.ServiceProvider.GetService<ApplicationDbContext>();
                    context.Database.Migrate();
                    EnsureSeedData(scope.ServiceProvider, context);
                }
            }
            ConsoleHelper.WriteInfoLine("Done seeding database.");
        }

        /// <summary>
        /// 客户端授权数据
        /// </summary>
        /// <param name="context"></param>
        private static void EnsureSeedData(ConfigurationDbContext context)
        {
            if (!context.Clients.Any())
            {
后面还有 190 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。