【发布时间】:2016-02-23 19:03:10
【问题描述】:
使用 Windows Azure 并尝试发布我的 MVC3 应用程序。 Publish Web 应用程序设置面板中的 Execute Code First Migration 复选框显示为灰色。我需要进行哪些更改才能启用它?
【问题讨论】:
标签: asp.net-mvc-3 entity-framework azure
使用 Windows Azure 并尝试发布我的 MVC3 应用程序。 Publish Web 应用程序设置面板中的 Execute Code First Migration 复选框显示为灰色。我需要进行哪些更改才能启用它?
【问题讨论】:
标签: asp.net-mvc-3 entity-framework azure
我相信您在尝试发布 MVC 应用程序时会看到以下“执行代码优先迁移”被禁用:
这可能是因为您没有为应用程序中的代码迁移编写完整的代码,或者您的 web.config 中没有或不正确的数据库设置,如 here 所述。
为了启用代码迁移,您必须在 web.config 中配置一个数据库(如果是 Windows Azure,您需要在 web.config 中提供 SQL 数据库信息),并且编写了一个完整的类来说明代码的方式迁移将取决于您的模型。 Here 是一个如何实现它的例子。
http://msdn.microsoft.com/en-us/library/dd394698#efcfmigrations
【讨论】:
我假设您已经拥有实体框架模型并且已经在您的数据库中(如果没有,那么您需要做一些阅读,@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
希望这可以为您节省一些时间。
【讨论】: