C# Azure未在发布EFCore 2应用程序时创建数据库架构
将ASPNetCore应用程序发布到Azure,并附带相关数据DLL Azure未在发布向导上拾取任何数据库,但正在从DbContext中拾取DbContext和连接字符串 我已经在C# Azure未在发布EFCore 2应用程序时创建数据库架构,c#,entity-framework,azure,entity-framework-core,ef-core-2.0,C#,Entity Framework,Azure,Entity Framework Core,Ef Core 2.0,将ASPNetCore应用程序发布到Azure,并附带相关数据DLL Azure未在发布向导上拾取任何数据库,但正在从DbContext中拾取DbContext和连接字符串 我已经在Startup.cs和DbContext中声明了连接字符串和DbProvider(SqlServer),它也在服务应用程序中声明为环境变量 发布向导看起来像 通过向导发布后,应用程序服务将成功部署,但API都出现了500个服务器错误 构建输出包含几个消息,在我看来,这些消息很成功 生成实体框架SQL脚本… 执行命令:
Startup.cs
和DbContext
中声明了连接字符串和DbProvider(SqlServer),它也在服务应用程序中声明为环境变量
发布向导看起来像
通过向导发布后,应用程序服务将成功部署,但API都出现了500个服务器错误
构建输出包含几个消息,在我看来,这些消息很成功
生成实体框架SQL脚本…
执行命令:dotnet ef migrations脚本--幂等--out.“/path”
生成实体框架SQL脚本成功完成
正在添加数据库。。connstr
我是否需要为应用程序的初始创建创建迁移
我一直在EFCore中使用代码优先范式方法,因此我在一些初始值设定项中进行了确保删除
和确保重新创建
,以进行测试,但这些在运行时没有被调用
我还在Startup.cs
中重新创建了一个文件
if (Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") == "Production")
{
services.AddDbContext<FFDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("MyDbConnection")));
}
else
{
services.AddDbContext<FFDbContext>(options =>
options.UseSqlServer(local connections string));
}
// Automatically perform database migration
services.BuildServiceProvider().GetService<FFDbContext>().Database.Migrate();
var context = services.BuildServiceProvider()
.GetRequiredService<FFDbContext>();
context.Database.EnsureCreated();
您只需更改以下两个文件中的DefaultConnection:
appsettings.json
和appsettings.Development.json
改变这个
"ConnectionStrings": {
"DefaultConnection": "Server=(LocalDb)\\MSSQLLocalDB;Database=webapi;Trusted_Connection=True;MultipleActiveResultSets=true"
}
到
运行以下查询:
dotnet ef migrations add initial
dotnet ef database update
您也可以尝试使用Visual studio,看看是否有帮助。是否已在SQL Management studio中检查表是否已创建?你检查过错误细节了吗?为什么调用API时会出现500个错误?你能分享这个错误信息吗?我已经检查了SSM表没有创建。我绝对可以分享错误信息,哪一条最适合查看?我不确定如何在Azure中正确访问邮件。我可以看到error.htm页面和事件查看器。尽管事件查看器未显示任何错误,但您是否已将应用程序部署为应用程序服务?如果是,那么您可以设置应用程序洞察并检查其中的错误,您可以检查Kudu中的日志,该日志位于.scm.azurewebsites.netOh。我没有意识到洞察中的错误可用性。数据库中不存在这些表,它们不是在部署EFCore应用程序时创建的。我编辑了原始帖子,在Azure insights中包含了一个SQL错误示例。谢谢。是否为您的azure sql实例正确配置了防火墙?您是否允许azure的服务使用azure sql。这是防火墙下的交换机!我缺少的是dotnet ef migrations add initial
语句。我还没有为Azure DB生成任何可供使用的迁移,因为我认为它可以像在本地开发中一样工作,在本地开发中,数据库是使用DbContext.Gld生成的,我知道这很有帮助。
"ConnectionStrings": {
"DefaultConnection": "Server=(LocalDb)\\MSSQLLocalDB;Database=webapi;Trusted_Connection=True;MultipleActiveResultSets=true"
}
"ConnectionStrings": {
"DefaultConnection": "Server=.;Database=WebApiEfCore;Trusted_Connection=True;"
}
dotnet ef migrations add initial
dotnet ef database update