我正在使用ASP.NET MVC 3项目,该项目使用Entity Framwork 4.3及其迁移。现在我希望Entity Framework使用我已经进行的迁移为我创建数据库。 当我尝试运行Update-Database脚本时,它给出了以下内容:
Update-Database -Verbose -ProjectName AssemblyWithMigrations -StartUpProjectName WebProjectAssembly
No migrations configuration type was found in the assembly '/* my name of assembly */'. (In Visual Studio you can use the Enable-Migrations command from Package Manager Console to add a migrations configuration).
但是,当我试图运行Enable-Migrations
时,我看到以下内容:
Migrations have already been enabled in project 'AssemblyWithMigrations '. To overwrite the existing migrations configuration, use the -Force parameter.
所以,问题是EF试图解析当前的迁移版本来更新数据库,我想。但数据库不存在,显然会失败。
问题是:如果不存在,如何使用EF迁移创建数据库?或者,使用Nuget控制台的正确方法是什么?
总之,我想要的是:
1.运行命令(也许是update-database
),它将使用我的web.config文件创建数据库
2.所有迁移将按创建顺序应用于创建的数据库。
感谢。 :)
答案 0 :(得分:40)
我意识到这是一个古老的问题,但到底是什么......
要启用迁移以创建初始数据库,我发现以下方法效果很好。
在Package-Management-Console类型“Add-Migration InitialCreate”
[可选,取决于您的数据库初始化程序]
这将为您提供一个迁移脚本,它将带您从“无数据库”到拥有与您当前模型匹配的数据库。
答案 1 :(得分:3)
使用迁移非常有用,但有时我发现在使用数据库时使用以下语句会更好。
数据库初始化策略:使用与您相关的任何注释语句。
public DataContext(): base("DefaultConnection")
{
// Database.SetInitializer<DataContext>(new CreateDatabaseIfModelChanges<DataContext>());
// Database.SetInitializer<DataContext>(new CreateDatabaseIfNotExists<DataContext>());
// Database.SetInitializer<DataContext>(new DropCreateDatabaseAlways<DataContext>());
}