DbContext.Database.Migrate()方法在哪里?

问题描述 投票:0回答:6

我本打算在启动时调用此方法,但它不在任何地方引用:

dbContext.Database.Migrate();

类型

DatabaseFacade
不包含
Migrate
的定义,并且没有 可以找到
Migrate
类型的扩展方法
DatabaseFacade
(您是否缺少 using 指令还是程序集引用?

那么我缺少哪个使用/组件?

c# entity-framework-migrations dbcontext ef-core-3.0
6个回答
8
投票

我需要通过 NuGet 添加以下依赖项。

Microsoft.EntityFrameworkCore
Microsoft.EntityFrameworkCore.SqlServer

5
投票

只需在顶部输入以下内容即可导入

EntityFrameworkCore

using Microsoft.EntityFrameworkCore;

2
投票
var migrator = dbContext.Database.GetService<IMigrator>();
await migrator.MigrateAsync("targetMigration", cancellationToken);

0
投票

(For.Net Core)添加包后(Oracle/SQLServer) enter image description here

您可以使用扩展来设计startup.cs。

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    app
        .UseSwaggerUI()
        .UseRouting()
        .UseCors(options => options
            .AllowAnyOrigin()
            .AllowAnyHeader()
            .AllowAnyMethod())
        .UseAuthentication()
        .UseAuthorization()
        .UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
        })
        .ApplyMigrations();
}

因此您可以如下调用ApplyMigrations。

using Microsoft.AspNetCore.Builder;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;

namespace SocialRebate.WebApi.Infrastructure.Extensions
{
    public static class ApplicationBuilderExtensions
    {
        public static IApplicationBuilder UseSwaggerUI(this IApplicationBuilder app)
            => app
                .UseSwagger()
                .UseSwaggerUI(options =>
                {
                    options.SwaggerEndpoint("/swagger/v1/swagger.json", "Your API");
                    options.RoutePrefix = string.Empty;
                });

        public static void ApplyMigrations(this IApplicationBuilder app)
        {
            using var services = app.ApplicationServices.CreateScope();

            var dbContext = services.ServiceProvider.GetService<YourDbContext>();

            dbContext.Database.Migrate();
        }
    }
}

0
投票

我在这个包中找到了它:Microsoft.EntityFrameworkCore.Relational

这是在这里声明的扩展RelationalDatabaseFacadeExtensions


-2
投票

DataContext
类的构造函数中,您可以使用

this.Database.Migrate();

它应该做得很好。

© www.soinside.com 2019 - 2024. All rights reserved.