EF-CodeFirst-数据库初始化】的更多相关文章

最近用EF做了几个小东西,了解简单使用后有了深入研究的兴趣,所以想系统的研究一下EF CodeFist的几个要点.下面简单列一下目录 1.1 目录 数据库初始化策略和数据迁移Migration的简单介绍 配置一对一关系 配置一对多关系 配置多对多关系 开发环境配置Migration最佳实践和生产环境配置Migration最佳实践 2.1 数据库初始化策略 在**http://www.entityframeworktutorial.net**这个网站中,我找到相关数据库初始化的策略 2.1.1有四…
生成数据库 首先需要通过Nuget安装Migration 这一步是初始化Migration操作. 首先打开程序包控制台, 工具——NuGet包管理器——程序包管理控制台 打开后,在控制台输入下面的命令,这个命令只需要在第一次的时候使用. Enable-Migrations 输入完成后,会在我们的目录生成一个名为 Migrations 的文件夹 第二步,在控制台输入这个命令 Add-Migration InitialCreate 这一步是创建初始化的数据库,生成创建数据库表和相关设置的文件.一般这…
1. CodeFirst的默认约定 1.领域类和数据库架构的映射约定 在介绍数据库的初始化之前我们需要先了解领域类和数据库之间映射的一些约定.在CodeFirst模式中,约定指的是根据领域类(如Student,Grade类)自动配置概念模型的一些默认规则.在上一节的小栗子中,我们没有在领域类中做任何配置,但是EF API帮我们配置了主外键.关系.列的数据类型等,这就是约定在起作用.下表中列除了一些默认的CodeFirst约定: 默认规则 描述 Schema EF创建所有的DB对象都放在dbo架构…
1.添加初始化数据(Seed) 我们可以在初始化数据库的过程中给数据库添加一些数据.为了实现初始化数据(seed data)我们必须创建一个自定义的数据库初始化器(DB initializer),并重写其中的Seed方法. 下边的栗子展示在School数据库中给Standard表添加默认的数据: 第一步:创建自定义初始化器 //继承三种内置的初始化器中的DropCreateDatabaseAlways public class SchoolDBInitializer : DropCreateDa…
原文链接:http://www.entityframeworktutorial.net/code-first/database-initialization-strategy-in-code-first.aspx EF 6 Code-First系列文章目录: 1 翻译系列:什么是Code First(EF 6 Code First 系列) 2.翻译系列:为EF Code-First设置开发环境(EF 6 Code-First系列) 3.翻译系列:EF Code-First 示例(EF 6 Cod…
CodeFirst 工作流程 创建或修改领域类-->使用数据注解或者Fluent API来配置领域类-->使用自动数据库迁移技术或者基于代码的数据库迁移技术来创建数据库. CodeFirst默认约定 约定就是一系列的默认规则,通过这些规则,在使用EF Code-First的时候,可以自动的基于你的领域类配置概念模型.默认约定的命名空间:System.Data.Entity.ModelConfiguration.Conventions; ①schema(模式)  默认情况下,EF会为所有的数据库…
前面的例子中,我们已经看到了Code-First自动为我们创建数据库的例子. 这里我们将要学习的是,当初始化的时候,Code-First是怎么决定数据库的名字和服务的呢??? 下面的图,解释了这一切!!! 这个图解释了,数据库初始化的流程,是基于我们在上下文类中的构造函数中传递的参数. 在上面的图中,context类中的base构造器中,可以填入下面的参数: 无参数(No Parameter) 数据库的名字(Database Name) 连接字符串的名字(Connection String Na…
1.CreateDatabaseIfNotExists: 2.DropCreateDatabaseIfModelChanges: 3.DropCreateDatabaseAlways: 4.Custom DB Initializer: public class SchoolDBContext: DbContext { public SchoolDBContext(): base("SchoolDBConnectionString") { Database.SetInitializer&…
最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精    本篇为进阶篇,也是弥补自己之前没搞明白的地方,惭愧惭愧. 如有不明白,请参考:EF CodeFirst 创建数据库 及 EF CodeFirst增删改查之'CRUD' 话不多说,直接上代码: using System; using System.Collections.Generic; using System.Linq; using System…
最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精    话说EF支持三种模式:Code First   Model First   DataBase First,微软最新的EF框架,也就是EF7舍弃了Model First 和 DataBase First,咱们作为最底层的程序员必须跟着'党'的走,既然微软都放弃了Model First 和 Database First,那么我们也应当跟着'党'的路线走…