如何使用代码首先迁移创建数据库?(How to create database using code

2019-06-24 17:16发布

我在ASP.NET MVC 3项目,该项目采用实体Framwork 4.3和迁移。 现在我想实体框架给我使用,我已经迁移了创建一个数据库。 当我尝试运行更新的数据库的脚本,它给了我以下内容:

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.所有迁移将创建的数据库在其创建顺序应用创建数据库。

谢谢。 :)

Answer 1:

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

为了使迁移创建我发现了以下工作以及初始数据库。

  1. 从SQL Server对象资源管理器中删除数据库
  2. 从迁移文件夹中删除所有现有的迁移。
  3. 在包管理控制台输入“Add-迁移InitialCreate”

    [可选的,取决于你的数据库初始化]

  4. 在包管理控制台型“更新数据库”

这会给你一个单一的迁移脚本,将带你从“无数据库”,以具有当前模型相匹配的数据库。



Answer 2:

使用迁移是非常有用的,但在我发现时间,最好使用数据库时,使用下面的语句。

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

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


文章来源: How to create database using code first migrations?