我想为我的应用程序自动应用迁移,所以我使用了此方法
Database.Migrate()
将上下文的所有挂起迁移应用于数据库。如果数据库尚不存在,将创建该数据库。
因此,正如我所理解,当我运行我的应用程序时,它应该如下所示: 1-创建数据库如果它不存在2-更新数据库=>将迁移应用到数据库
但是当我运行我的项目时,什么都没有发生,我手动编写命令来应用数据库,这是一项工作,但我不知道问题出在哪里
这是我的代码
dbContext
using Microsoft.Extensions.Configuration;
using Microsoft.EntityFrameworkCore;
using brokerTest.Entites;
namespace brokerTest.Brokers.Sotrage
{
public class StorageBroker : DbContext , IStorageBroker
{
private readonly IConfiguration configuration;
public StorageBroker(IConfiguration configuration)
{
this.configuration = configuration;
this.Database.Migrate();
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder){
var connectionString = this.configuration.GetConnectionString("DefaultConnection");
optionsBuilder.UseSqlServer(connectionString);
}
public DbSet<User> Users { get; set; }
}
}startup.cs
services.AddDbContext<StorageBroker>();
services.AddScoped<IStorageBroker, StorageBroker>();appsettingfile.json
{
"ConnectionStrings": {
"DefaultConnection": "server=(localdb)\\MSSQLLocalDB;Database=testDb"
},安装了.NET 6、Microsoft.EntityFrameworkCore.Design 5.0.8和Microsoft.EntityFrameworkCore.SqlServer 5.0.8的软件包
发布于 2021-07-19 01:33:41
我发现dbContext类根本没有被调用,因为我没有用任何控制器或类注入它
在我将dbContext注入控制器类之后
[ApiController]
[Route("/home")]
public class HomeController : Controller
{
private readonly IStorageBroker _storageBrodker;
public HomeController(IStorageBroker storageBroker)
{
_storageBrodker = storageBroker;
}当我调用路由时,/home类被调用,然后应用迁移
我认为调用它是因为我在服务中注册了它,但我不知道在需要解析时调用它
在构建iHost object https://docs.microsoft.com/en-us/ef/core/managing-schemas/migrations/applying?tabs=dotnet-core-cli#apply-migrations-at-runtime时,Sasan的注释提供了另一种从main执行此操作的方法
https://stackoverflow.com/questions/68430899
复制相似问题