gpt4 book ai didi

c# - 无法通过 Entity Framework 在 Azure 中使用代码优先方法创建 SQL 表

转载 作者:太空宇宙 更新时间:2023-11-03 14:54:17 25 4
gpt4 key购买 nike

我正在尝试使用 EF 将数据库发布到 azure,但迁移后看不到任何表。

我尝试了以下命令:

Add-Migration MyTables
Update-Database

当我通过 SSMS 检查 Azure DB 时,我可以在 dbo.__EFMigrationsHistory 表中看到所有迁移的日志,但没有创建任何表。

我的上下文类:

 public class ApplicationContext : DbContext
{
public DbSet<Expense> Expenses { get; set; }

public ApplicationContext(DbContextOptions opts) : base(opts)
{

}

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
}
}

连接字符串:

"ConnectionString": { "ExpenseApplicationDB": "Server=tcp:myserver,1432;Initial Catalog=ExpenseDatabase;Persist Security Info=False;User ID={your_username};Password={your_password};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;" }

还在数据库部分的发布对话框中显示“项目中未找到数据库”。

如果我尝试使用本地数据库实现相同的目标,那么它会按预期工作。有什么地方做错了吗?

最佳答案

当您使用 .net EntityFramework 进行发布时,您可以单击选项卡执行代码优先迁移(在应用程序启动时运行)

但是,在EF core中,它并不存在。另外,EF不支持自动迁移,您可能需要手动执行Add-Migration来添加迁移文件。

Also in publish dialog in database section it showing 'No databases found in the project'.

你也不能存在数据库,你不能 apply migration on publish .

enter image description here

如果你想apply migration at runtime ,您可以在 Startup.csConfigure 方法中添加以下代码。

 using (var scope = app.ApplicationServices.GetService<IServiceScopeFactory>().CreateScope())
{
scope.ServiceProvider.GetRequiredService<ApplicationDbContext>().Database.Migrate();
}

更多详情可以引用这个thread .

注意,您需要确保可以连接到azure数据库。您可以将 azure 中的连接设置为与本地的连接。这样您也可以在本地使用azure数据库进行测试并调试它。

关于c# - 无法通过 Entity Framework 在 Azure 中使用代码优先方法创建 SQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50408497/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com