你好我正在开始一个新项目,我一直在努力获得一个好的数据库初始化算法。
我想要的是每次应用程序初始化时都删除/创建。然后运行迁移。
所以我理想的工作流程是(当应用程序启动时): 1. 如果数据库存在则删除数据库 2. 从模型类创建数据库 3. 初始化网络安全(ASP.NET 角色提供程序) 4. 运行迁移脚本
3和4可以互换。
我遇到的问题是迁移没有运行,或者删除数据库(如果存在)没有运行。(并且网络安全的初始化涉及一些技巧,因为它必须在创建数据库之后运行,以便它可以在步骤 #2 中创建的 UserProfile 表上添加外键约束。
我认为我遇到困难的一个可能原因是,迁移从未打算与 Drop/Create 策略一起运行。我需要为一个全新的项目运行迁移的原因是我想在列上指定一个索引。到目前为止,我知道如何做到这一点的唯一方法是在迁移脚本中:
public override void Up()
{
CreateIndex("dbo.UserProfile", "UserName", true);
}