EF架构~CodeFirst模型下的数据初始化
我为什么会来
在传统的大型系统设计中,数据库建模是个比开发更早的环节,先有数据库,然后是ORM模型,最后才是开发程序,而这种模型在EF出现后发生了转变,而且有可能将来会被code first取代,因为你的关系型数据库没有必要定死,你在部署网站时,没人愿意先建立一大堆SQL语句,谁都愿意在IIS上运行后,数据库自动生成,无论是sqlserver,orcale,mysql它如果都是自动生成,那该多爽!事实上,这种开发模型已经愉愉的进入了我们的世界里,尤其是在第三方服务器部署时,这种code first让你感觉更加方法,应该你不用在一个个建立数据表了,像香港云这种第三方服务器,普通用户不支持SQL命令,建立表只能一个一个的建立。
数据初始化
而当你的数据库被建立后,数据表的信息也可以同时被初始化的,这也是今天要说的,它分于两叔,第一在config里开启这个初始化功能,第二建立自己的Initializer类,让它实现DropCreateDatabaseIfModelChanges<YourContext>泛型方法即可,具体看一下代码
一 配置启用,将web.config里的entityFramework改这样
<entityFramework>
<contexts>
<context type="Lind.DDD.Manager.ManagerContext, Lind.DDD.Manager">
<databaseInitializer type="Lind.DDD.Manager.ManagerInitializer, Lind.DDD.Manager" />
</context>
</contexts>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v12.0" />
</parameters>
</defaultConnectionFactory> </entityFramework>
二 编写初始化类代码
/// <summary>
/// 数据库初始化
/// </summary>
public class ManagerInitializer : DropCreateDatabaseIfModelChanges<ManagerContext>
{
protected override void Seed(ManagerContext context)
{
try
{
#region 部门表
var department = new WebDepartments
{
About = "",
DepartmentName = "公司",
DeptLevel = ,
Operator = "admin",
ParentID = null,
SortNumber = ,
Status = ,
UpdateDate = DateTime.Now,
};
context.WebDepartments.Add(department);
context.SaveChanges();
#endregion #region 菜单表
var menu = new WebManageMenus
{
About = "",
LinkUrl = "",
MenuLevel = ,
MenuName = "根",
Operator = "admin",
ParentID = null,
SortNumber = ,
Status = ,
UpdateDate = DateTime.Now,
};
context.WebManageMenus.Add(menu);
context.SaveChanges();
#endregion base.Seed(context);
}
catch (Exception)
{ throw;
} }
}
感谢各位的阅读,希望本文章可以帮到您!
EF架构~CodeFirst模型下的数据初始化的更多相关文章
- 第十七节: EF的CodeFirst模式的四种初始化策略和通过Migration进行数据的迁移
一. 四种初始化策略 EF的CodeFirst模式下数据库的初始化有四种策略: 1. CreateDatabaseIfNotExists:EF的默认策略,数据库不存在,生成数据库:一旦model发生变 ...
- EF架构~codeFirst从初始化到数据库迁移
一些介绍 CodeFirst是EntityFrameworks的一种开发模式,即代码优先,它以业务代码为主,通过代码来生成数据库,并且加上migration的强大数据表比对功能来生成数据库版本,让程序 ...
- EF架构~CodeFirst数据迁移与防数据库删除
回到目录 本文介绍两个概念,防数据库自动删除,这是由于在code first模式下,当数据实体发生变化时,会对原来数据库进行删除,并将新数据表添加进来,但这对于我们的运营环境数据库,是万万不能接受的, ...
- EF架构~CodeFirst生产环境的Migrations
回到目录 Migrations即迁移,它是EF的code first模式出现的产物,它意思是说,将代码的变化反映到数据库上,这种反映有两种环境,一是本地开发环境,别一种是服务器的生产环境,本地开发环境 ...
- EF架构~充血模型设置不被持久化的属性
回到目录 在Poco实体中,一般只有属性没有方法,这在软件设计中称为贫血模型,而在DDD领域驱动设计中,比较提倡充血模型,即你的Poco实体中,即有属性,也有操作属性的方法,注意这里说的是操作属性的方 ...
- EF架构~CodeFirst自关联表的插入
回到目录 这个文章对之前EF的一个补充,对于一些自关联表的添加,如果你建立了表约束确实有这种问题,一般主键为整形自增,父ID为可空,这时,在添加时如果不为ID赋值,结果就会出错. 错误: 无法确定依赖 ...
- 9.3 翻译系列:数据注解特性之Key【EF 6 Code-First 系列】
原文链接:http://www.entityframeworktutorial.net/code-first/key-dataannotations-attribute-in-code-first.a ...
- 5.翻译系列:EF 6中数据库的初始化(EF 6 Code-First 系列)
原文地址:http://www.entityframeworktutorial.net/code-first/database-initialization-in-code-first.aspx EF ...
- 6.翻译系列:EF 6 Code-First中数据库初始化策略(EF 6 Code-First系列)
原文链接:http://www.entityframeworktutorial.net/code-first/database-initialization-strategy-in-code-firs ...
随机推荐
- 虚拟机上安装Linux操作系统
很久之前就知道虚拟机这个东西,也都在虚拟机上安装过Windows的操作系统和Linux的操作系统,但是一直都没有去做笔记. 最近还是比较有时间,就移除了前两天刚刚安装的Linux系统,重新安装一次,做 ...
- hdu 1015(DFS)
Safecracker Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
- hdu 5795
A Simple Nim Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tota ...
- express教程
原文地址 http://javascript.ruanyifeng.com/nodejs/express.html JavaScript 标准参考教程(alpha) 草稿二:Node.js Expre ...
- Python 学习---------Day4
第十章 Python语句简介Python的代码书写要求,以及换行等语句可以扩越多行,只要将其封闭在圆括号内,方括号内或大括号内即可,可以使用分号终止.用\可以允许我们跨越多行一个简单的交互式循环whi ...
- pundit
gem "pundit" Include Pundit in your application controller: class ApplicationController &l ...
- SQL操作大全
下列语句部分是Mssql语句,不可以在access中使用. SQL分类: DDL-数据定义语言(CREATE,ALTER,DROP,DECLARE) DML-数据操纵语言(SELECT,DEL ...
- 关于H5本部缓存localStorage,sessionStorage
HTML5 提供了两种在客户端存储数据的新方法: localStorage - 没有时间限制的数据存储 sessionStorage - 针对一个 session 的数据存储 之前,这些都是由 coo ...
- xcode6如何支持空模板
Single View Application 改成空模板的歩揍(xcode6.0.1): 1.删除info.plist 中的Main Storyboard file base name 选项 2.将 ...
- 在RHEL6p5中设置网卡
前提: 在用ifconfig -a查看时已经显示出wlan0(无线网卡)的存在(即不用装驱动,驱动另记) 工具: 1.yum install wpasupplicant* 2.yum install ...