Code First 更新数据库结构
参考:http://blog.csdn.net/sxycxwb/article/details/12186159
0、删除之前的数据库
1、Run the Enable-Migrations command in Package Manager Console
进入(PM)软件包管理控制台 (视图——》其他窗口——》程序包管理控制台)输入以下指令:Enable-Migrations
会提示:"No context type was found in the assembly",可能是因为“0”的原因,不过可以通过“2”解决。
2、PM> Enable-Migrations -ProjectName <Your project Name> -StartUpProjectName <Start up project name>
如:PM> Enable-Migrations -ProjectName MVC_MODELS -StartUpProjectName MVC_WEB
结果: Checking if the context targets an existing database...
Detected database created with a database initializer. Scaffolded migration '201407041310515_InitialCreate' corresponding to existing database. To use an automatic migration instead, delete the Migrations folder and re-run Enable-Migrations specifying the -EnableAutomaticMigrations parameter.
Code First Migrations enabled for project MVC_MODMVCELS.
此时:项目中多了一个文件夹(Migrations)和Configuration.cs文件
3、使用Visual Studio打开Configuration.cs文件。使用以下代码替换Seed方法内容:
context.Members.AddOrUpdate(
new Member
{
M_Name = "admin",
M_PassWord = "admin"
}
);
context.Places.AddOrUpdate(
new Place
{
P_Number = ""
}
);
context.ConsumRecords.AddOrUpdate(
new ConsumRecord
{
CR_Member = new Member
{
M_Name = "admin",
M_PassWord = "admin"
},
CR_Place = new Place
{
P_Number = ""
}
}
);
代码先行迁移机制在每次迁移后调用Seed方法,如果存在行数据,则该方法更新现有数据,如果不存在,则该方法插入数据。
按下CTRL+SHIFT+B来生成项目(如果此处不执行此生成操作,后续的步骤会失败)
4、下一步是创建DbMigration 类来初始化迁移。迁移将创建一个新的数据库,这也是在前面步骤中删除数据库文件的原因。
PM> add-migration -ProjectName MVC_MODMVCELS FirstMigration
正在为迁移“FirstMigration”搭建基架。 此迁移文件的设计器代码包含当前 Code First 模型的快照。在下一次搭建迁移基架时,将使用此快照计算对模型的更改。如果对要包含在此迁移中的模型进行其他更改,则您可通过再次运行“Add-Migration 201310140747227_FirstMigration”重新搭建基架。
PM>
代码先行迁移机制在Migrations文件夹下创建另外一个类文件,文件名为时间戳+下划线+ FirstMigration.cs,例如201310140747227_FirstMigration.cs,该类包含了创建数据库架构的代码。迁移文件名预置为时间戳有助于排序。查看该文件,包含了创建Movie库表的说明。当你更新数据库时,该类将被执行,创建数据库架构。随后,Seed方法将被执行,测试数据被添加其中。
5、在程序包管理器控制台窗口,键入"update-database"命令来创建数据库和执行Seed方法。
PM> update-database -ProjectName Xwb.Core.Data 指定“-Verbose”标记以查看应用于目标数据库的 SQL 语句。
正在应用基于代码的迁移: [201310140747227_FirstMigration]。
正在应用基于代码的迁移: 201310140747227_FirstMigration。
正在运行 Seed 方法。
PM>
6、自动迁移
在生成的Configuration中做如下修改:
public Configuration() { AutomaticMigrationsEnabled = true; AutomaticMigrationDataLossAllowed = true; }
① AutomaticMigrationsEnabled:获取或设置 指示迁移数据库时是否可使用自动迁移的值。
② AutomaticMigrationDataLossAllowed:获取或设置 指示是否可接受自动迁移期间的数据丢失的值。如果设置为false,则将在数据丢失可能作为自动迁移一部分出现时引发异常。
Code First 更新数据库结构的更多相关文章
- Code First 更新数据库结构(简单实现方法:会删除原来的数据)
之前在 http://www.cnblogs.com/mmcmmc/p/3833265.html 写到关于“Code First 更新数据库结构”的东西. 可是由于某种原因,新手们会出现各种问题,好了 ...
- Code First 下自动更新数据库结构(Automatic Migrations)
示例 Web.config <?xml version="1.0" encoding="utf-8"?> <configuration> ...
- Entity Framework 6 Code First的简单使用和更新数据库结构
一.安装Entity Framework 6 在项目中右击选择“管理NuGet程序包",联机搜索Entity Framework,点击安装 二.配置数据库连接 在App.config中加入数 ...
- EF Code First更新数据库时报错:provider: SQL Network Interfaces, error: 26
在使用EF Code First更新数据库时报如下错误: 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误.未找到或无法访问服务器.请验证实例名称是否正确并且 SQL Serv ...
- EF core (code first) 通过自定义 Migration History 实现多租户使用同一数据库时更新数据库结构
前言 写这篇文章的原因,其实由于我写EF core 实现多租户的时候,遇到的问题. 具体文章的链接: Asp.net core下利用EF core实现从数据实现多租户(1) Asp.net core下 ...
- 使用Code first 进行更新数据库结构(数据迁移)
CodeFirst 背景 code first起初当修改model后,要持久化至数据库中时,总要把原数据库给删除掉再创建(DropCreateDatabaseIfModelChanges),此时就会 ...
- EF Code First 更新数据库, 数据库迁移
1.EF Code First创建数据库 新建控制台应用程序Portal,通过程序包管理器控制台添加EntityFramework. 在程序包管理器控制台中执行以下语句,安装EntityFramewo ...
- Code First 更新数据库 记录
每次都会忘记这个,所以记录一下 第一步:打开程序包管理控制台 第二步:启动迁移配置 第三步: 更新数据库的迁移的名称 因为设置了多个context,所以要指定更新的是哪一个库. 如果没有指定,会出现下 ...
- ASP.NET MVC4 新手入门教程特别篇之一----Code First Migrations更新数据库结构(数据迁移)修改Entity FrameWork 数据结构(不删除数据)
背景 code first起初当修改model后,要持久化至数据库中时,总要把原数据库给删除掉再创建(DropCreateDatabaseIfModelChanges),此时就会产生一个问题,当我们的 ...
随机推荐
- [转载]WCF序列化65536大小限制的问题
错误: The formatter threw an exception while trying to deserialize the message: There was an error whi ...
- uva 10739
dp 只有三个操作 当str[i] != str[j] 时 dp(i, j) = min(dp(i+1, j), dp(i+1, j-1), dp(i, j-1)) #include <ios ...
- uva 10810
刘汝佳书上 143 归并排序求逆序数对 #include <cstdio> #include <cstring> #include <cstdlib> #incl ...
- uva 10051
将每一个分解为六个两面的 简单地dp 回溯输出路径..... #include <cstdio> #include <cstring> #include <cmath&g ...
- js 全选 反选
1.全选 function selectAll(form){ for (var i = 0; i < form.elements.length; i++) { if (form.elements ...
- MVC开发过程中的疑难杂症
MVC使用客户端验证 <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type=& ...
- [itint5]区间相交
http://www.itint5.com/oj/#14 要记录原来的索引,所以用了额外的空间,新生成一个结构.如果要省空间,可以用指针来排序,最后拿指针减去索引0的位置就是index,见:http: ...
- IntelliJ IDEA 添加jar包的三种方式
一.直接复制:(不推荐)方法:直接将硬盘上的jar包复制粘贴到项目的lib目录下.
- Django Navi 重用
代码来自这里: base.html <html> <head>...</head> <body> ... {% block nav %} <ul ...
- zip文件解压或压缩
<span style="font-size:18px;">/** * lsz */ public final class ZipUtil { /** * 解压zip文 ...