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

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

hot3.png

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

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

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

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

Database.SetInitializer( CreateDatabaseIfNotExists
());

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

Database.SetInitializer( DropCreateDatabaseIfModelChanges
());

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

Database.SetInitializer( DropCreateDatabaseAlways
());

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

详细用法:

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

Database.SetInitializer
( 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对象,即可重新生成数据库。

复制代码

   (ManagementDBContext db =  result =

复制代码

 

二、自定义生成策略

自定义策略主要用的自定义策略中重写的Seed方法。

可以在Seed方法中加一些初始数据,这样生成的时候就会生成初始数据。

复制代码

  ManagementDBContextInitializer : DropCreateDatabaseAlways
   roles =  List
=====>

转载于:https://my.oschina.net/jackguo/blog/315894

你可能感兴趣的文章
我的友情链接
查看>>
Centos 6.3 安装 VNC
查看>>
交换机基本命令的配置
查看>>
esxi中虚拟机中GTX1070
查看>>
docker
查看>>
vc char * 转换为 LPCTSTR的方法
查看>>
Android adb 使用详细介绍(含adb使用命令行)
查看>>
LNMP安装+cacti
查看>>
我的友情链接
查看>>
app2sd功能解读
查看>>
负载均衡之后的如何让应用程序获取客户端真实IP
查看>>
Integer对象的一些误解
查看>>
ubuntu下添加新用户,踢出在线用户
查看>>
chattr和lsattr命令详解
查看>>
是时候升级到 vSphere 5.1 了!
查看>>
烂泥:通过binlog恢复mysql备份之前的数据
查看>>
spring retry重试机制原理解析(手写原理)
查看>>
编译安装web服务
查看>>
PHP: CodeIgniter3中函数名不能与控制器名相同的问题
查看>>
SSDCRM紧急发布一个安全漏洞补丁
查看>>