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))] 
public class MyContextContext : DbContext 

}

EntityFramework6.X 之 Database Initialization的更多相关文章

  1. Database Initialization Strategies in Code-First:

    You already created a database after running your Code-First application the first time, but what ab ...

  2. 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 ...

  3. 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 ...

  4. Entity Framework Code-First(17):Database Initialization Strategy

    Database Initialization Strategies in Code-First: You already created a database after running your ...

  5. Entity Framework Code-First(6):Database Initialization

    Database Initialization: We have seen that Code First creates a database automatically in the Simple ...

  6. 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] ...

  7. 【原】Configuring Oracle Data Guard In Physical Standby Database

    作者:david_zhang@sh [转载时请以超链接形式标明文章] http://www.cnblogs.com/david-zhang-index/p/5042640.html参照文档:https ...

  8. 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 ...

  9. Creating a Physical Standby Database 11g

    1.Environment Item Primary database standby database Platform Redhat 5.4 Redhat 5.4 Hostname gc1 gc2 ...

随机推荐

  1. Oracle常用数据字典

    1.查看所有存储过程.索引.表格.PACKAGE.PACKAGE BODY select * from user_objects; 2.查询所有的Job select * from user_jobs ...

  2. 微软在.NET官网上线.NET 架构指南频道

    微软在Visual Studio 2017 正式发布的时候也上线了一个参考应用https://github.com/dotnet/eShopOnContainers , 最近微软给这个参考应用写了完善 ...

  3. Git与Github的使用学习

    摘要 本文讲解下Git的使用,包括使用Git上传项目工程到Github,文末有彩蛋哦. 1.安装Git 使用apt-get安 sudo apt-get update sudo apt-get inst ...

  4. Activity栈与任务管理探究1——栈与任务的概述

    Activity栈与任务管理探究1--栈与任务的概述 内容概览 1. 前言 2. Activity中的Stack 3. Activity中的Task 4. Activity栈与任务管理基本原则 1. ...

  5. Java原子变量

    实现全局自增id最简单有效的方式是什么?java.util.concurrent.atomic包定义了一些常见类型的原子变量.这些原子变量为我们提供了一种操作单一变量无锁(lock-free)的线程安 ...

  6. sql中的复制函数REPLICATE

    REPLICATE函数: REPLICATE(字符串,次数)复制一个字符串n次 ) --输出结果:0000000000

  7. 第六章 Hibernate关联映射

    第六章 hibernate关联映射一.本章知识点分为2部分:1.关联关系:单向多对一关联关系,双向一对多关联关系(含一对多关联关系),多对多关联关系2.延迟加载:类级别加载策略,一对多加载策略,多对一 ...

  8. 【HDOJ 2150】线段交叉问题

    Pipe Time Limit : 1000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submissi ...

  9. spring学习总结二-----面向切面编程(AOP)思想

    上一篇spring博客简总结了spring控制反转和依赖注入的相关思想知识点,这篇博文对spring的面向切的编程思想进行简单的梳理和总结. 一.面向切面的思想 与面向对象的纵向关系概念不同,面向切面 ...

  10. react+redux+generation-modation脚手架添加一个todolist

    当我遇到问题: 要沉着冷静. 要管理好时间. 别被bug或error搞的不高兴,要高兴,又有煅炼思维的机会了. 要思考这是为什么? 要搞清楚问题的本质. 要探究问题,探究数据的流动. TodoList ...