Entity FrameWork初始化数据库的四种策略
程序猿就是苦逼,每天还得分出一些时间去写博文。天真的很热,今天就随便写一点啦!
1、EF初始化数据库的四中策略
EF可以根据项目中的模型自动创建数据库。下面我们就分类看看Entity Framework数据库初始化四种策略
一、 //每次运行都会创建新的数据库
Database.SetInitializer<XXXXXContext>(new DropCreateDatabaseAlways<XXXXXContext>());
二、//只有第一次运行~才会创建新的数据库~默认的方式
Database.SetInitializer<XXXXXContext>(new CreateDatabaseIfNotExists<XXXXXContext>());
三、 //修改模型后~运行~会创建新的数据库
Database.SetInitializer<XXXXXContext>(new DropCreateDatabaseIfModelChanges<XXXXXContext>());
四、//使用自己配置的数据库,请到:web.config中配置自己的连接字符串,注意连接字符串的名称应与上下文:XXXXContext的名字一致。
Database.SetInitializer<Models.musicStoreContext>(null);
注:以上代码请到Global.asax中加上,加上之后会有破浪线,请添加EF的命名空间:using System.Data.Entity;
实例代码如下:
protected void Application_Start()
{
//Entity Framework数据库初始化四种策略
//自己去配置连接字符串
Database.SetInitializer<Models.musicStoreContext>(null);
//默认方式 第一次创建
Database.SetInitializer<Models.musicStoreContext>(new CreateDatabaseIfNotExists<Models.musicStoreContext>());
//每一次都会删除旧数据库然后创建新的数据库
Database.SetInitializer<Models.musicStoreContext>(new DropCreateDatabaseAlways<Models.musicStoreContext>());
//模型关系改变时创建新数据库
Database.SetInitializer<Models.musicStoreContext>(new DropCreateDatabaseIfModelChanges<Models.musicStoreContext>()); AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
AuthConfig.RegisterAuth();
}
2、讲完了上述四中策略,下面就讲解一下EF的约定优先原则:
EF会尽可能的使用约定而非配置,如果在程序运行时,不按照上述四方法配置具体的数据库连接方式,EF将按照约定创建一个连接,也就是根据模型关系创建一个数据库。EF
创建新数据库的过程如下:
首先EF将尝试连接SQLserverExpress的本地实例,并且查找与上下文:XXXXContext名字相同的数据库,如果EF找不到这个数据库,EF则会根据约定创建一个数据库。
好吧,讲的不太好,吃饭了!饿了!
Entity FrameWork初始化数据库的四种策略的更多相关文章
- MSSQL Server数据库的四种连接方法和sql连接字符串
MSSQL Server数据库的四种连接方法和sql连接字符串 分类: [ 03 ] C#(131) [ 07 ] SQL Server(68) [ 01 ] .NET(189) 今天用SQL Ser ...
- 用Entity Framework往数据库插数据时,出现异常,怎么查看异常的详细信息呢?
做项目时,在用Entity Framework往数据库插数据时,程序报异常,但是通过报的异常死活没法查看异常的详细信息.这让人很是烦恼.本着自己动手丰衣足食的原则,通过查看资料终于找到了显示异常详细信 ...
- FastJson 支持配置的PropertyNamingStrategy四种策略
摘要: FastJson默认使用CamelCase,在1.2.15版本之后,FastJson支持配置PropertyNamingStrategy,支持四种策略: CamelCase.PascalCas ...
- 数据库操作事物的四大特性以及MySQL数据库的四种隔离级别
1 .事物操作数据库的四大特性(ACID) 1.原子性 (Atomicity) 原子性:就是事物的所包含的所有操作,要么全部成功,要么全部失败回滚. 2.一致性 (Consistency) 一致性:简 ...
- Entity Framework 数据库初始化四种策略
策略一:数据库不存在时重新创建数据库 Database.SetInitializer<testContext>(new CreateDatabaseIfNotExists<testC ...
- Entity Framework数据库初始化四种策略
策略一:数据库不存在时重新创建数据库 程序代码 Database.SetInitializer<testContext>(new CreateDatabaseIfNotExists< ...
- ASP.NET MVC+Entity Framework 访问数据库
Entity Framework 4.1支持代码优先(code first)编程模式:即可以先创建模型类,然后通过配置在EF4.1下动态生成数据库. 下面演示两种情形: 1.代码优先模式下,asp.n ...
- Entity Framework Code First (四)Fluent API - 配置属性/类型
上篇博文说过当我们定义的类不能遵循约定(Conventions)的时候,Code First 提供了两种方式来配置你的类:DataAnnotations 和 Fluent API, 本文将关注 Flu ...
- Entity Framework关联实体的三种加载方法
推荐文章 EF性能之关联加载 总结很好 一:介绍三种加载方式 Entity Framework作为一个优秀的ORM框架,它使得操作数据库就像操作内存中的数据一样,但是这种抽象是有性能代价的,故鱼和熊掌 ...
随机推荐
- GWP PHP auth page works
经过修改,看起来GWP能工作了.不过还是需要深入了解ca的page flow,PHP and Perl大不同 1015 ls /var/www/html/gwp/lib/database.php 1 ...
- 使用 PHP 限制下载速度
使用 PHP 限制下载速度 [来源] 达内 [编辑] 达内 [时间]2012-12-12 经常遇到一个问题,那就是有人再办公室下载东西,影响大家上网.办公.同样的问题,要是出现在了服务器上面 ...
- PHP CURL 多线程 GET/POST 类
PHP CURL 多线程 GET/POST 类 2015-01-01 分类:技术文章 阅读(623) 评论(0) 如果有需要更正或更高效的建议,欢迎在OSchina分享~\(≧▽≦)/~ http:/ ...
- 20145317彭垚 《Java程序设计》第6周学习总结
20145317彭垚 <Java程序设计>第6周学习总结 第十章 输入/输出 10.1 InputStream与OutputStream 1.串流设计的概念 Java将输入/输出抽象化为串 ...
- Thread safety
https://en.wikipedia.org/wiki/Thread_safety Thread safety is a computer programming concept applicab ...
- Grid组件 列头居中
在grdMain组件中的 class中设置“ x-grid-title-center ”
- [转载]推荐不伤眼睛的文字背景色 VS背景色
天天使用电脑要主要保护眼睛.下面介绍下不伤眼睛的文字背景色 苹果绿 RGB 204,255,204 #CCFFCC 杏仁黄 rgb 250 249 222 #FAF9DE 青草绿 rgb 227 23 ...
- 启用“关闭自动根证书更新”,解决Windows系统各种卡顿的问题(Visual studio 卡、远程桌面mstsc卡、SVN卡)
最近,发现在Win7下面一系列操作都会出现卡顿的情况: 1. Visual studio 启动调试和关闭调试时,都会卡上半分钟左右 2. 使用远程桌面mstsc.exe,点击连接时,也会卡上半分钟 ...
- javaScript中的单引号与双引号
javaScript中的单引号与双引号没有什么区别.但因为xhtml规范要求所有xhtml属性要用双引号括起来.所以在javaScript中使用单引号. var html = '<h2 clas ...
- Mongoose中关联查询populate的使用
MongoDB中没有join的特性,因此无法使用join进行表的连接和关联查询,在Mongoose中封装了populate方法,在定义一个 Schema 的时候可以指定了其中的字段(属性)是另一个Sc ...