Azure不会在发布EFCore 2应用程序时创建数据库架构

问题描述 投票:0回答:1

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

Azure没有在发布向导上获取任何数据库,而是从DbContext获取DbContext和连接字符串。

我在Startup.csDbContext中声明了连接字符串和DbProvider(SqlServer),它也被声明为服务应用程序中的环境变量。

发布向导看起来像this

通过向导发布后,app服务成功部署,但API全部达到500个服务器错误。

构建输出包含几条消息,对我来说就像是成功。

Generating Entity framework SQL Scripts...

Executing command: dotnet ef migrations script --idempotent --out "./path"

Generating Entity framework SQL Scripts completed successfully

adding database .. connstr

我是否需要为初始创建应用程序创建迁移?

我一直在使用EFCore中的Code First范例方法,因此我在一些初始化器中使用EnsureDeletedEnsureCreated进行测试,但这些都没有在运行时调用。

我在EnsureCreated内也有一个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();

我觉得如果有什么我补偿尝试创建数据库,任何想法?

Edit - SQL Error from Azure Insights

System.Data.SqlClient.SqlException:
   at System.Data.SqlClient.SqlConnection.OnError (System.Data.SqlClient, Version=4.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)
   at System.Data.SqlClient.SqlInternalConnection.OnError (System.Data.SqlClient, Version=4.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning (System.Data.SqlClient, Version=4.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)
   at System.Data.SqlClient.TdsParser.TryRun (System.Data.SqlClient, Version=4.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)
   at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData (System.Data.SqlClient, Version=4.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)
   at System.Data.SqlClient.SqlDataReader.get_MetaData (System.Data.SqlClient, Version=4.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)
   at System.Data.SqlClient.SqlCommand.FinishExecuteReader (System.Data.SqlClient, Version=4.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)
   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds (System.Data.SqlClient, Version=4.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader (System.Data.SqlClient, Version=4.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)
   at System.Data.SqlClient.SqlCommand.ExecuteReader (System.Data.SqlClient, Version=4.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)
   at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader (System.Data.SqlClient, Version=4.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)
   at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.Execute (Microsoft.EntityFrameworkCore.Relational, Version=2.2.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60)

c# entity-framework azure entity-framework-core ef-core-2.0
1个回答
0
投票

您只需要在以下两个文件中更改DefaultConnection:

appsettings.jsonappsettings.Development.json

改变这个

"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

您也可以尝试使用Visual Studio,看看它是否有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.