English 中文(简体)
如何使用代码第一迁移来创建数据库?
原标题:How to create database using code first migrations?

I m having ASP.NET MVC 3 project that uses Entity Framwork 4.3 and its migrations. Now I want Entity Framework to create a database for me using migrations that I have already. When I trying to run Update-Database script it gives me the following:

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-Migrications 时,我可以看到:

Migrations have already been enabled in project AssemblyWithMigrations . To overwrite the existing migrations configuration, use the -Force parameter.

因此,问题在于EF试图解决当前更新数据库的移民版本。但数据库并不存在,显然失败了。

问题是:如果EF 迁移不存在, 如何使用它创建数据库? 或者,使用 Nuget 控制台来创建该数据库的正确方法是什么?

In summary, what I want: 1. run command (perhaps update-database) that will create database using my web.config file 2. all migrations will be applied on the created database in their creation order.

谢谢。 )

最佳回答

我知道这是个老问题 但到底...

为使迁移能够创建初始数据库,我发现以下数据效果良好。

  1. Delete your database from within SQL Server Object Explorer
  2. Delete all your existing migrations from within the Migrations folder.
  3. 在软件包-管理- 调控型“ 添加- 移动初始化” 软件包类型中

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

  4. In Package-Management-Console type "update-database"

这将为您提供一个单一的迁移脚本, 它会将您从“ 无数据库” 带到拥有一个符合您当前模式的数据库 。

问题回答

使用移徙手段非常有用,但有时我发现在与数据库合作时最好使用以下声明。

数据库初始化战略:使用与你相关的评论说明。

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

要使用“软件包管理器控制台”在“实体框架”中使用代码第一迁移创建数据库, 您可以遵循这些步骤 :

1 - 开放视觉工作室,打开您定义 DbContext 和 实体类的项目。

< 加固> -2 打开软件包管理器控制台, 查看 - & gt; 其他 Windows - & gt; 软件包管理器控制台 。

<强度>3 - 启用带有特定 DbContext: 的迁移

Enable-Migrations -Context YourDbContextName

<强度>4 - 添加用于特定 Dbcontext 的初始迁移:

Add-Migration InitialCreate -Context YourDbContextName

<强度>5 - 特定 DbContext 更新数据库:

Update-Database -Context YourDbContextName




相关问题
Entity Framework with MySQL connector in c#

I have been trying to get the Entity Framework to work in my web application using MySQL. It works fine on my local pc, but doesn t work when I put it on the server. Since the server is a shared ...

How Do I Create And Update A Many To Many Relationship With EF

I am using the Entity Framework with SQL Server. I have a many to many relationship between 2 tables. I have created a join table with just the primary key fields of the 2 tables. In the designer, the ...

Entity Framework with File-Based Database

I am in the process of developing a desktop application that needs a database. The application is currently targeted to SQL Express 2005 and works wonderfully. However, I m not crazy about having ...

Linq to enties, insert foreign keys

I am using the ADO entity framework for the first time and am not sure of the best way of inserting db recored that contain foreign keys. this is the code that i am using, I would appreciate any ...

Entity Framework - Many to many question

I have a table called ASB and a table called PeopleInvolved. There is a junction table called PeopleInvolved_ASB which simply contains an ASBID and a PeopleInvolvedID column. The columns act as a ...

Post back complex object from client side

I m using ASP.NET MVC and Entity Framework. I m going to pass a complex entity to the client side and allow the user to modify it, and post it back to the controller. But I don t know how to do that ...

ADO.NET Entity Data Model are not precise enough

I run this code: var cos = from k in _db.klienci_do_trasy where k.klient_id == 5 select k; but the query send to database is: SELECT * FROM `klienci_do_trasy` LIMIT 0, 30 why is it for, there ...

热门标签