我有一个非常基本的迁移文件。我在Package Manager控制台窗口中执行dotnet ef database update --verbose,但SQL Server中没有生成任何内容。
Package Manager控制台窗口中的最后几行输出如下所示:
Finding design-time services for provider Microsoft.EntityFrameworkCore.SqlServer...
Using design-time services from provider Microsoft.EntityFrameworkCore.SqlServer.
Finding design-time services referenced by assembly BM.Server.
No referenced design-time services were found.
Finding IDesignTimeServices implementations in assembly BM.Server...
No design-time services were found.
Done.下面是我的代码以及添加和删除迁移的工作。它只是试图更新数据库,我遇到了这个问题。
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<BMDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("BMDbConnectionString")));
}
}
public class BMDbContext : DbContext
{
public BMDbContext(DbContextOptions<BMDbContext> options) : base(options) { }
}我还为该项目安装了以下nuget包,两个dll都在我的Microsoft.EntityFrameworkCore.Design目录中:
发布于 2020-11-05 09:13:47
正如在this article中所引用的,您应该添加设计时DbContext。将以下类添加到项目中:
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Design;
namespace WebApplication8
{
public class DesignTimeBMDbContext : IDesignTimeDbContextFactory<BMDbContext>
{
public BMDbContext CreateDbContext(string[] args)
{
var optionsBuilder = new DbContextOptionsBuilder<BMDbContext>();
// pass your design time connection string here
optionsBuilder.UseSqlServer("<connection_string>");
return new BMDbContext(optionsBuilder.Options);
}
}
}添加这个类之后,EF CLI将使用它来创建和更新设计时数据库
https://stackoverflow.com/questions/64676058
复制相似问题