博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Entity FrameWork Code First 之 MVC4 数据库初始化策略用法
阅读量:5750 次
发布时间:2019-06-18

本文共 2031 字,大约阅读时间需要 6 分钟。

通过启用迁移和更新数据库可以很容易的生成一张表。但是对数据库修改之后,通过数据迁移就没那么好实现了。

这里用到数据库生成策略,进行对数据库操作:

一、3种主要数据库生成策略

1 CreateDatabaseIfNotExists 方法会在没有数据库时创建一个,这是默认行为。

Database.SetInitializer(new CreateDatabaseIfNotExists
());

2 DropCreateDatabaseIfModelChanges 如果我们在在模型改变时,自动重新创建一个新的数据库,就可以用这个方法。在这开发过程中非常有用。

Database.SetInitializer(new DropCreateDatabaseIfModelChanges
());

3 DropCreateDatabaseAlways 如果你想在每次运行时都重新生成数据库就可以用这个方法。

Database.SetInitializer(new DropCreateDatabaseAlways
());

修改数据库之后重新生成数据库,推荐使用 DropCreateDatabaseAlways

详细用法:

1).Global.asax:Application_Start()方法中添加: 

Database.SetInitializer
(new DropCreateDatabaseAlways
());

  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
{ protected override void Seed(ManagementDBContext context) {
var roles = new List
{ new Role{ RoleName="超级管理员", Description="Administrator" }, new Role{ RoleName="普通管理员", Description="Admin" } }; roles.ForEach(l => context.Roles.Add(l));
        base.Seed(context);
} }

 

 

 

转载于:https://www.cnblogs.com/xcong/p/3524598.html

你可能感兴趣的文章
我的友情链接
查看>>
Windows Phone 7 隔离存储空间资源管理器
查看>>
apache安装报错undefined reference ssl
查看>>
关于爱情只有一句忠告
查看>>
CentOS 7下安装部署Oracle11g图文教程
查看>>
F#初学笔记06
查看>>
实战:将企业域名解析委派给企业DNS服务器
查看>>
在Lync 2013环境部署Office Web Apps
查看>>
微软大会Ignite,你准备好了么?
查看>>
读书笔记-高标管事 低调管人
查看>>
Master带给世界的思考:是“失控”还是进化
查看>>
用户和开发者不满苹果iCloud问题多多
查看>>
java.lang.UnsatisfiedLinkError:no dll in java.library.path终极解决之道
查看>>
我的工具:文本转音频文件
查看>>
【许晓笛】从零开始运行EOS系统
查看>>
【跃迁之路】【460天】程序员高效学习方法论探索系列(实验阶段217-2018.05.11)...
查看>>
C++入门读物推荐
查看>>
TiDB 源码阅读系列文章(七)基于规则的优化
查看>>
Spring之旅第八站:Spring MVC Spittr舞台的搭建、基本的控制器、请求的输入、表单验证、测试(重点)...
查看>>
数据结构与算法——常用排序算法及其Java实现
查看>>