ASP.NET核心项目 - 发布不显示“数据库迁移”选项

时间:2016-12-06 21:01:25

标签: entity-framework azure asp.net-core-mvc

我的项目过去非常适合.NET Core 1.0,但是转向1.1让我感到头痛!我一直在使用 Microsoft Azure 进行发布,并没有遇到太多问题。

我认为我只关注数据库迁移。我一直在使用迁移很长一段时间,但是当我发布时,我没有选择'在发布时应用此迁移'。

我有第二个项目正常运作。当我打开发布屏幕时,图标会旋转,显示“发现数据上下文... ”,然后更改为“实体框架迁移”。

但对于我的生活,我无法让它与我的主要项目合作!!

什么可能阻止“实体框架迁移”在发布时出现?

我已经完成添加迁移初始更新数据库,并且这些工作在本地完美,但在尝试发布时却没有

我的ApplicationDbContext.cs只是一个默认设置,适用于其他项目。

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options){
    }

dotnet --info

 .NET Command Line Tools (1.0.0-preview2-1-003177)

当我在本地运行时,我可以删除SQL数据库,并在我启动时将其恢复。所以我知道迁移工作正常。我只是无法在发布期间显示该选项。

谢谢!

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。很遗憾,我还没有 的答案。

我没有具体答案,但我知道这对于vs2017 RC来说已经是一个已知问题:https://github.com/aspnet/Tooling/blob/master/known-issues-vs2017.md#migrations-not-applied-during-publish

它表示要手动应用这些迁移,但由于我使用的是新项目类型,因此我无法访问dotnet ef命令行工具。

如果您的项目有可用的命令行工具(您还在使用project.json等),那么我相信有一个-script选项可以让您输出一个脚本迁移,然后您可以在服务器上手动运行。

我在efcore github上提出了一个问题:https://github.com/aspnet/EntityFramework/issues/7276

答案 1 :(得分:1)

我刚刚遇到这个问题,'发现数据上下文......'微调器运行了一段时间,然后我没有得到'实体框架迁移'选择权。

为我修复的是重建发布配置文件,如下所示:

在“发布”屏幕中,按“创建新的个人资料”链接: Publish to Azure screen

然后切换到Select Existing选项:

Publish Select Existing

然后选择您现有的App Service

enter image description here

完成后,'实体框架迁移'部分在发布工具的设置中按预期显示。

有关信息,重新创建发布文件似乎没有对.pubmxl文件进行任何重大更改。唯一的更改是resourcegroupsresourceGroups设置中更改为<ResourceId><PublishFramework />更改为<PublishFramework></PublishFramework>。这些似乎都不是导致问题的原因。