使用 Windows Azure 并尝试发布我的 MVC3 应用程序。Publish Web 应用程序设置面板中的 Execute Code First Migration 复选框显示为灰色。我需要进行哪些更改才能启用它?
2 回答
我相信您在尝试发布 MVC 应用程序时会看到以下“执行代码优先迁移”被禁用:
这可能是因为您没有为应用程序中的代码迁移编写完整的代码,以及您的 web.config 中没有或不正确的数据库设置,如此处所述。
为了启用代码迁移,您必须在 web.config 中配置一个 DB(如果是 Windows Azure,您需要在 web.config 中提供 SQL 数据库信息),并且编写了一个完整的类来说明代码迁移将如何发生取决于你的模型。这是有关如何实现它的示例。
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
的文件夹
希望这可以节省您一些时间。