我在我的项目中使用实体框架代码优先方法。我已经使用包管理器控制台中的 enable-migrations 语句创建了模型并启用了迁移。我的上下文类包含映射配置和关系,例如
modelBuilder.Configurations.Add(new PostMap());
modelBuilder.Configurations.Add(new UserMap());
我的迁移文件 201302261054023_InitialCreate.cs 中的 Up 方法包含所有表定义作为我通过 DbSet<Type> 属性指定的上下文。
我在自定义数据库 Initializer 中更改了 InitializeDatabase 方法,因为我想在数据库初始化期间迁移到特定的迁移。
public void InitializeDatabase(T context)
{
bool databaseExists = context.Database.Exists();
if (!databaseExists)
context.Database.CreateIfNotExists();
var configuration = new Configuration();
var migrator = new DbMigrator(configuration);
migrator.Update("InitialCreate");
}
可以修改 201302261054023_InitialCreate 类中的 Up 方法以添加另一个索引
CreateTable(
"dbo.City",
c => new
{
Id = c.Int(nullable: false, identity: true),
Name = c.String(maxLength: 450),
})
.PrimaryKey(t => t.Id);
到
CreateTable(
"dbo.City",
c => new
{
Id = c.Int(nullable: false, identity: true),
Name = c.String(maxLength: 450),
})
.PrimaryKey(t => t.Id)
.Index(t=>t.Name,true);
不附加另一个迁移?