【问题标题】:Execute Code First Migrations is Grayed Out in Publish Settings执行代码优先迁移在发布设置中显示为灰色
【发布时间】:2016-02-23 19:03:10
【问题描述】:

使用 Windows Azure 并尝试发布我的 MVC3 应用程序。 Publish Web 应用程序设置面板中的 Execute Code First Migration 复选框显示为灰色。我需要进行哪些更改才能启用它?

【问题讨论】:

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


    【解决方案1】:

    我相信您在尝试发布 MVC 应用程序时会看到以下“执行代码优先迁移”被禁用:

    这可能是因为您没有为应用程序中的代码迁移编写完整的代码,或者您的 web.config 中没有或不正确的数据库设置,如 here 所述。

    为了启用代码迁移,您必须在 web.config 中配置一个数据库(如果是 Windows Azure,您需要在 web.config 中提供 SQL 数据库信息),并且编写了一个完整的类来说明代码的方式迁移将取决于您的模型。 Here 是一个如何实现它的例子。

    http://msdn.microsoft.com/en-us/library/dd394698#efcfmigrations

    【讨论】:

    • 谢谢.. 在包管理器控制台中运行 Enable-Migrations 添加了我迁移所需的代码。
    【解决方案2】:

    我假设您已经拥有实体框架模型并且已经在您的数据库中(如果没有,那么您需要做一些阅读,@AvkashChauhan 的回答确实是一个很好的起点)。

    但是,如果您确实有模型和所有配置,例如:

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
       modelBuilder.Configurations.Add(new YourEntityMap());
    }
    

    以及所有的实体映射,例如:

    public class YourEntityMap : EntityTypeConfiguration<YourEntity>
    {
        public YourEntityMap()
        {
            this.HasKey(t => t.Id);
        }
    }
    

    您仍然没有启用该死的复选框,您可能需要执行以下步骤:

    转到Tools > NuGet Package Manager > Package Manager Console

    然后在控制台写

    Enable-Migrations -ContextTypeName Company.Models.YourDevContext

    其中Company.Models.YourDevContext 是您的数据库上下文(查找从DbContext 继承的类应该与具有OnModelCreating 覆盖的类相同)。

    运行命令后你应该得到类似的东西:

    此时您应该将Migrations 文件夹添加到解决方案more on how to handle migrations here

    希望这可以为您节省一些时间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多