C# Azure未在发布EFCore 2应用程序时创建数据库架构

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脚本… 执行命令:

将ASPNetCore应用程序发布到Azure,并附带相关数据DLL

Azure未在发布向导上拾取任何数据库,但正在从DbContext中拾取DbContext和连接字符串

我已经在
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