如何使用代码首次迁移创建数据库?

sig*_*urd 20 entity-framework ef-migrations entity-framework-4.3

我正在使用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.所有迁移将按创建顺序应用于创建的数据库.

谢谢.:)

Dav*_*e R 41

我意识到这是一个古老的问题,但到底是什么......

为了使迁移能够创建初始数据库,我发现以下工作正常.

  1. 从SQL Server对象资源管理器中删除数据库
  2. 从"迁移"文件夹中删除所有现有迁移.
  3. 在Package-Management-Console类型"Add-Migration InitialCreate"中

    [可选,取决于您的数据库初始化程序]

  4. 在Package-Management-Console中输入"update-database"

这将为您提供单个迁移脚本,该脚本将使您从"无数据库"到拥有与当前模型匹配的数据库.


小智 5

使用迁移非常有用,但有时我发现在处理数据库时使用以下语句会更好。

数据库初始化策略:使用任何与您相关的注释语句。

public DataContext(): base("DefaultConnection") 
{
  // Database.SetInitializer<DataContext>(new CreateDatabaseIfModelChanges<DataContext>());
  // Database.SetInitializer<DataContext>(new CreateDatabaseIfNotExists<DataContext>());                                                            
  // Database.SetInitializer<DataContext>(new DropCreateDatabaseAlways<DataContext>());
}                                                                                                                                                                                                                                                   
Run Code Online (Sandbox Code Playgroud)