Entity FrameWork Code First 之 MVC4 数据库初始化策略用法
通过启用迁移和更新数据库可以很容易的生成一张表。但是对数据库修改之后,通过数据迁移就没那么好实现了。
这里用到数据库生成策略,进行对数据库操作:
一、3种主要数据库生成策略
1 CreateDatabaseIfNotExists 方法会在没有数据库时创建一个,这是默认行为。
Database.SetInitializer(new CreateDatabaseIfNotExists<xxx>());
2 DropCreateDatabaseIfModelChanges 如果我们在在模型改变时,自动重新创建一个新的数据库,就可以用这个方法。在这开发过程中非常有用。
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<xxx>());
3 DropCreateDatabaseAlways 如果你想在每次运行时都重新生成数据库就可以用这个方法。
Database.SetInitializer(new DropCreateDatabaseAlways<xxx>());
修改数据库之后重新生成数据库,推荐使用 DropCreateDatabaseAlways
详细用法:
1).Global.asax:Application_Start()方法中添加:
Database.SetInitializer<ManagementDBContext>(new DropCreateDatabaseAlways<ManagementDBContext>());
ManagementDBContext 为自己定义的Context上下文。
2).然后删除项目中启用数据迁移自动生成的文件夹:Migrations及下面所有内容
不删除会报一个The DropCreateDatabaseAlways initializer did not drop or create the database backing context 'ManagementDBContext' because Migrations are enabled for the context. Use Migrations to manage the database for this context, for example by running the 'Update-Database' command from the Package Manager Console. 错误。
3).最后在代码中使用db对象,即可重新生成数据库。
public ActionResult Index()
{
using (ManagementDBContext db = new ManagementDBContext())
{
var result = db.Permissions.ToList();
}
return View();
}
二、自定义生成策略
自定义策略主要用的自定义策略中重写的Seed方法。
可以在Seed方法中加一些初始数据,这样生成的时候就会生成初始数据。
public class ManagementDBContextInitializer : DropCreateDatabaseAlways<ManagementDBContext>
{
protected override void Seed(ManagementDBContext context)
{var roles = new List<Role>
{
new Role{
RoleName="超级管理员",
Description="Administrator"
},
new Role{
RoleName="普通管理员",
Description="Admin"
}
};
roles.ForEach(l => context.Roles.Add(l));
base.Seed(context);
} }
Entity FrameWork Code First 之 MVC4 数据库初始化策略用法的更多相关文章
- Entity FrameWork Code First无法生成数据库 解决办法
		
我是控制台应用程序,没有connectionStrings,试了几个方法也都不可以. 这是别人的博客用其他方法. http://www.cnblogs.com/Gyoung/archive/2013/ ...
 - Entity Framework Code First数据库连接
		
1. 安装Entity Framework 使用NuGet安装Entity Framework程序包:工具->库程序包管理器->程序包管理器控制台,执行以下语句: PM> Insta ...
 - Entity Framework Code First数据库连接 转载 https://www.cnblogs.com/libingql/p/3351275.html
		
Entity Framework Code First数据库连接 1. 安装Entity Framework 使用NuGet安装Entity Framework程序包:工具->库程序包管理器 ...
 - Asp.Net MVC4开发二: Entity Framework在Asp.Net MVC4中的应用
		
ORM作为一种数据库訪问机制已广泛地应用于各种项目其中,在.Net开发中,应用比較广泛的ORM框架大致有以下几个: 官方支持的有:Linq to SQL.Entity Framework.三方的有:N ...
 - Entity Framework Code First学习系列目录
		
Entity Framework Code First学习系列说明:开发环境为Visual Studio 2010 + Entity Framework 5.0+MS SQL Server 2012, ...
 - Entity Framework Code First属性映射约定
		
Entity Framework Code First与数据表之间的映射方式有两种实现:Data Annotation和Fluent API.本文中采用创建Product类为例来说明tity Fram ...
 - Entity Framework Code First关系映射约定
		
本篇随笔目录: 1.外键列名默认约定 2.一对多关系 3.一对一关系 4.多对多关系 5.一对多自反关系 6.多对多自反关系 在关系数据库中,不同表之间往往不是全部都单独存在,而是相互存在关联的.两个 ...
 - Entity Framework Code First使用DbContext查询
		
DbContext.DbSet及DbQuery是Entity Framework Code First引入的3个新的类,其中DbContext用于保持数据库会话连接,实体变化跟踪及保存,DbSet用于 ...
 - Entity Framework Code First添加修改及删除单独实体
		
对于一个单独实体的通常操作有3种:添加新的实体.修改实体以及删除实体. 1.添加新的实体 Entity Framework Code First添加新的实体通过调用DbSet.Add()方法来实现. ...
 
随机推荐
- Firefox模拟手机访问手机网站
			
说明: 此方法只能用以那些以识别UA来判断的网站 使用步骤: 第一步:打开Firefox,点击菜单,工具-〉附加组件-〉获取附加组件: 第二步:查询安装三个组件:User Agent Switcher ...
 - 嵌入式开发之davinci--- 8148/8168/8127 中的图像采集格式Sensor信号输出YUV、RGB、RAW DATA、JPEG 4种方式区别
			
简单来说,YUV: luma (Y) + chroma (UV) 格式, 一般情况下sensor支持YUV422格式,即数据格式是按Y-U-Y-V次序输出的RGB: 传统的红绿蓝格式,比如RGB565 ...
 - 在Intellij IDEA下用X-debug调试PHP
			
用Intellij IDEA使用X-debug来调试PHP,主要需要配置的部分有三个地方,分别为php.ini的配置,IDEA的配置和浏览器的配置,主要如下: php.ini(wamp修改的是phpF ...
 - npm install 不自动生成 package-lock.json文件
			
package-lock.json这个文件的作用就不详细说明了 有需要的可以参考 :https://www.cnblogs.com/cangqinglang/p/8336754.html 网上都说 n ...
 - scrapy 相关
			
Spider类的一些自定制 # Spider类 自定义 起始解析器 def start_requests(self): for url in self.start_urls: yield Reques ...
 - ios消息推送机制原理与实现
			
本文转载至 http://hi.baidu.com/yang_qi168/item/480304c542fd246489ad9e91 Push的原理: Push 的工作机制可以简单的概括为下图 图中, ...
 - 【BZOJ4259】残缺的字符串 FFT
			
[BZOJ4259]残缺的字符串 Description 很久很久以前,在你刚刚学习字符串匹配的时候,有两个仅包含小写字母的字符串A和B,其中A串长度为m,B串长度为n.可当你现在再次碰到这两个串时, ...
 - Android性能测试摘入(TestHome)
			
Android性能测试: 客户端性能测试 服务端性能测试 客户端性能测试: 1.ROM版本的性能测试(即手机的不同操作系统):关注功耗测试 2.应用的性能测 ...
 - 让WebApi支持Namespace
			
环境:VS2012 .net 4.0 参考: http://aspnet.codeplex.com/SourceControl/changeset/view/dd207952fa86#Samples/ ...
 - Percolator
			
Percolator_百度百科 https://baike.baidu.com/item/Percolator/3772109 英 [ˈpɜ:kəleɪtə(r)]美 [ˈpɚkəˌletɚ] n.过 ...