简体   繁体   English

.Net6 中的 IHost 扩展

[英]IHost extension in .Net6

I am trying to migrate an IHost extension for EF Seed migration from.Net5 to.Net6.我正在尝试将用于 EF 种子迁移的 IHost 扩展从 .Net5 迁移到 .Net6。 Can you please lead me the proper way to do this conversion.能否请您指导我进行此转换的正确方法。

 public static class HostExtensions
    {
        public static IHost MigrateDatabase<TContext>(this IHost host,
                                            Action<TContext, IServiceProvider> seeder,
                                            int? retry = 0) where TContext : DbContext
        {
            int retryForAvailability = retry.Value;

            using (var scope = host.Services.CreateScope())
            {
                var services = scope.ServiceProvider;
                <code removed for brevity>                 
            }
            return host;
        }
    }

The extension is being called in.Net5 as follows:在 .Net5 中调用扩展如下:

  public static void Main(string[] args)
        {
            CreateHostBuilder(args)
                .Build()
                .MigrateDatabase<OrderContext>((context, services) =>
                {
                    var logger = services.GetService<ILogger<OrderContextSeed>>();
                    OrderContextSeed
                        .SeedAsync(context, logger)
                        .Wait();
                })
                .Run();
        }

MigrateDatabase :迁移数据库:

public static IHost MigrateDatabase(this IHost host)
    {
        using var scope = host.Services.CreateScope();

        var sp = scope.ServiceProvider;
        var loggerFactory = sp.GetRequiredService<ILoggerFactory>();

        // operations 
       
        return host;
    }

Program.cs :程序.cs:

var builder = WebApplication.CreateBuilder(args);

builder.Host
    .Build()
    .MigrateDatabase();

var app = builder.Build();

apo.Run();

use like this in Program.cs:)在 Program.cs 中这样使用:)

var app = builder.Build();
 app.MigrateDatabase<WebSocketAcceptContext>();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM