asp.net - Database.Migrate 方法
问题描述
我想为我的应用自动应用迁移,所以我使用了这种方法
Database.Migrate()
将上下文的任何挂起迁移应用到数据库。如果数据库尚不存在,将创建该数据库。
所以据我了解,当我运行我的应用程序时,它应该执行以下操作 1-如果数据库不存在则创建数据库 2-更新数据库 => 将迁移应用到数据库
但是当我运行我的项目时没有任何反应我手动编写命令来应用数据库并且它可以工作但我不知道问题出在哪里
这是我的代码
数据库上下文
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; }
}
}
启动.cs
services.AddDbContext<StorageBroker>();
services.AddScoped<IStorageBroker, StorageBroker>();
应用程序设置文件.json
{
"ConnectionStrings": {
"DefaultConnection": "server=(localdb)\\MSSQLLocalDB;Database=testDb"
},
安装包 .NET 6 , Microsoft.EntityFrameworkCore.Design 5.0.8 Microsoft.EntityFrameworkCore.SqlServer 5.0.8
解决方案
我发现根本没有调用 dbContext 类,因为我没有用任何控制器或类注入它
在我将 dbContext 注入到我的控制器类之后
[ApiController]
[Route("/home")]
public class HomeController : Controller
{
private readonly IStorageBroker _storageBrodker;
public HomeController(IStorageBroker storageBroker)
{
_storageBrodker = storageBroker;
}
当我调用 route /home 类时,将应用迁移
我认为它被调用是因为我在服务中注册它但我不知道它在需要解决时被调用
Sasan 的评论在构建 iHost 对象时提供了另一种从 main 执行此操作的方法 https://docs.microsoft.com/en-us/ef/core/managing-schemas/migrations/applying?tabs=dotnet-core-cli #apply-migrations-at-runtime
推荐阅读
- android - 如何使用 ADB shell 从串行端口读取和显示数据?
- bash - How to compare percent file size in an if
- jquery - how to disable dropdowns as default on radio button which checked first?
- powershell - 命令提示符不执行 powershell 脚本
- containers - How to implement service discovery in AWS ECS?
- android - 在Android中,是否可以在复合设备上获得接口2中的类的权限
- python - 尝试创建一个函数,该函数返回列表中奇偶数的元组
- excel-formula - Excel:用一串文本替换缩写
- java - 在java中制作字符串中的字母列表
- javascript - javascript匿名函数作为对象方法