EntityFramework6.X 之 Database Initialization
Database Initialization
下图是数据库初始化的工作流

EF为数据库初始化准备了多种策略:
l CreateDatabaseIfNotExists:这是默认的初始化策略
l DropCreateDatabaseAlways:总是创建数据库,不管数据库中是否存在数据,每次应用程序启动时就会重新设置
l DropCreateDatabaseIfModelChanges:有且仅当领域模型发生改变的时候创建数据库
若要启动测试数据则必须在应用程启动的时候通过Database.SetInitializer(new DropCreateDatabaseAlways<DBContext>())来初始化。
数据库初始化也可以继承最原始IDatabaseInitializer<>类来创建经典原始的初始化
public class AppTestContextCustomInitializer : IDatabaseInitializer<ApplicationDbContext>{
public void InitializeDatabase(ApplicationDbContext context){
if (context.Database.Exists()){
if (!context.Database.CompatibleWithModel(true)){
context.Database.Delete();}}
context.Database.Create();
context.Database.ExecuteSqlCommand("CREATE TABLE GLOBAL_DATA([KEY] VARCHAR(50), [VALUE] VARCHAR(250))");}}
可以通过配置文件来指定初始化数据库类
在<appSettings>节点中插入一个子节点:
<appSettings>
<add key="DatabaseInitializerForType CodeFirstDbInitializerDemo.BlogContext,CodeFirstDbInitializerDemo"
value="CodeFirstDbInitializerDemo.BlogContextCustomInitializer, CodeFirstDbInitializerDemo" />
</appSettings>
在模型中可用特性[Table(“tablename”)]指定存储的表格名称
EF中使用DbConfiguration类可定义一个Db配置类,使其继承DbConfiguration类,然后自定义Db配置,最后具体应用到具体的DbContext类上通过DbConfigurationType特性
如先创建一个配置类:
public class MyConfiguration : DbConfiguration{
public MyConfiguration(){
SetExecutionStrategy("providerName",()=>new SqlAzureExecutionStrategy());
SetDefaultConnectionFactory(new LocalDbConnectionFactory("v11.0"));}}
使用的话可以通过两种方式:
一种通过配置文件进行:
<entityFramework codeConfigurationType="MyNamespace.MyDbConfiguration, MyAssembly">
...Your EF config...
</entityFramework>
还有一种通过特性配置:
[DbConfigurationType(typeof(MyDbConfiguration))]
publicclassMyContextContext : DbContext
{
}
EntityFramework6.X 之 Database Initialization的更多相关文章
- Database Initialization Strategies in Code-First:
You already created a database after running your Code-First application the first time, but what ab ...
- Database Initialization Parameters for Oracle E-Business Suite Release 12 (文档 ID 396009.1)
In This Document Section 1: Common Database Initialization Parameters For All Releases Section 2: Re ...
- Database Initialization Parameters for Oracle E-Business Suite Release 12
In This Document Section 1: Common Database Initialization Parameters For All Releases Section 2: Re ...
- Entity Framework Code-First(17):Database Initialization Strategy
Database Initialization Strategies in Code-First: You already created a database after running your ...
- Entity Framework Code-First(6):Database Initialization
Database Initialization: We have seen that Code First creates a database automatically in the Simple ...
- What is the Database Initialization Parameter That is Associated to an ORA-32004 Error ?
APPLIES TO: Oracle Database - Enterprise Edition - Version 9.2.0.1 to 11.2.0.3 [Release 9.2 to 11.2] ...
- 【原】Configuring Oracle Data Guard In Physical Standby Database
作者:david_zhang@sh [转载时请以超链接形式标明文章] http://www.cnblogs.com/david-zhang-index/p/5042640.html参照文档:https ...
- EBS initialization parameters - Healthcheck
APPLIES TO: Oracle EBS Applications Performance - Version 11.5.10.2 to 12.2 [Release 11.5.10 to 12.2 ...
- Creating a Physical Standby Database 11g
1.Environment Item Primary database standby database Platform Redhat 5.4 Redhat 5.4 Hostname gc1 gc2 ...
随机推荐
- Android内存优化之OOM
内容大多都是和OOM有关的实践总结概要.理解错误或是偏差的地方,还请多包涵指正,谢谢!本人Q:1524447071 (一)Android的内存管理机制 Google在Android的官网上有这样一篇文 ...
- POST与GET
面试如果被问到这个问题,相信很多人都是会心一笑,答案随口而来: 1.GET在浏览器回退时是无害的,而POST会再次提交请求. 2.GET请求会被浏览器主动cache,而POST不会,除非手动设置. 3 ...
- 模拟退火算法(SA)求解TSP 问题(C语言实现)
这篇文章是之前写的智能算法(遗传算法(GA).粒子群算法(PSO))的补充.其实代码我老早之前就写完了,今天恰好重新翻到了,就拿出来给大家分享一下,也当是回顾与总结了. 首先介绍一下模拟退火算法(SA ...
- DevExpress ChartControl 设置它的标题
private void SetHZTitle(ref ChartControl chartControl, string HTitle) { chartControl.Titles.Clear(); ...
- 在Ubuntu中使用JAVA与tomcat搭建web服务器
一:材料 1.操作系统:ubuntu16.04 2.JAVA: jdk1.8.0 3.Tomcat:tomcat 8 4.域名:zhuandshao.cn 二:过程 1.安装java 1)在官网下载j ...
- Json对象和Json字符串之间的转换
json字符串转json对象,调用parse方法: var b='{"name":"2323","sex":"afasdf&quo ...
- 1.2 N层架构
N层架构 介绍 ABP架构 其他(通用) 领域层 应用层 基础设施层 网络和展现层 其他 总结 介绍 应用程序代码库的分层架构是被广泛认可的可以减少程序复杂度.提高代码复用率的技术.为了实现分层架构, ...
- IDEA第一章----下载安装idea,设置背景字体编码,配置JDK/Maven
写在前面的话: 在程序的世界混迹了5年+,认真过,蹉跎过,回首突然发现自己得到的东西却很少.于是想写点东西记录下学习.工作抑或生活的种种,人生不只是眼前的苟且还有诗和远方,任沧海桑田韶华不在,愿无岁月 ...
- bootstrap loadStep流程节点动态显示
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- css3---线性渐变
.example1 { width: 150px; height: 80px; background: -moz-linear-gradient( top,#ccc,#000); background ...