回到目录

我为什么会来

在传统的大型系统设计中,数据库建模是个比开发更早的环节,先有数据库,然后是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模型下的数据初始化的更多相关文章

  1. 第十七节: EF的CodeFirst模式的四种初始化策略和通过Migration进行数据的迁移

    一. 四种初始化策略 EF的CodeFirst模式下数据库的初始化有四种策略: 1. CreateDatabaseIfNotExists:EF的默认策略,数据库不存在,生成数据库:一旦model发生变 ...

  2. EF架构~codeFirst从初始化到数据库迁移

    一些介绍 CodeFirst是EntityFrameworks的一种开发模式,即代码优先,它以业务代码为主,通过代码来生成数据库,并且加上migration的强大数据表比对功能来生成数据库版本,让程序 ...

  3. EF架构~CodeFirst数据迁移与防数据库删除

    回到目录 本文介绍两个概念,防数据库自动删除,这是由于在code first模式下,当数据实体发生变化时,会对原来数据库进行删除,并将新数据表添加进来,但这对于我们的运营环境数据库,是万万不能接受的, ...

  4. EF架构~CodeFirst生产环境的Migrations

    回到目录 Migrations即迁移,它是EF的code first模式出现的产物,它意思是说,将代码的变化反映到数据库上,这种反映有两种环境,一是本地开发环境,别一种是服务器的生产环境,本地开发环境 ...

  5. EF架构~充血模型设置不被持久化的属性

    回到目录 在Poco实体中,一般只有属性没有方法,这在软件设计中称为贫血模型,而在DDD领域驱动设计中,比较提倡充血模型,即你的Poco实体中,即有属性,也有操作属性的方法,注意这里说的是操作属性的方 ...

  6. EF架构~CodeFirst自关联表的插入

    回到目录 这个文章对之前EF的一个补充,对于一些自关联表的添加,如果你建立了表约束确实有这种问题,一般主键为整形自增,父ID为可空,这时,在添加时如果不为ID赋值,结果就会出错. 错误: 无法确定依赖 ...

  7. 9.3 翻译系列:数据注解特性之Key【EF 6 Code-First 系列】

    原文链接:http://www.entityframeworktutorial.net/code-first/key-dataannotations-attribute-in-code-first.a ...

  8. 5.翻译系列:EF 6中数据库的初始化(EF 6 Code-First 系列)

    原文地址:http://www.entityframeworktutorial.net/code-first/database-initialization-in-code-first.aspx EF ...

  9. 6.翻译系列:EF 6 Code-First中数据库初始化策略(EF 6 Code-First系列)

    原文链接:http://www.entityframeworktutorial.net/code-first/database-initialization-strategy-in-code-firs ...

随机推荐

  1. Android应用程序Monkey测试

    Monkey是Android SDK中附带的一个测试工具:Monkey用于进行压力测试,软件开发人员结合monkey打印日志和系统日志,解决测试中出现的问题. Monkey测试的特点:所有事件都是随机 ...

  2. redis命令总结

     Redis命令总结 redis 127.0.0.1:6379> info  #查看server版本内存使用连接等信息 redis 127.0.0.1:6379> client list  ...

  3. Oracle中rownum和rowid的理解(转)

    本文转自地址http://www.linuxidc.com/Linux/2012-04/58300.htm rownum,rowid都叫伪列. 但是,rownum是逻辑上的编号,且其值总是从1开始,每 ...

  4. ASP.NET Core 1.0 中的依赖项管理

    var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...

  5. 小清新cygwin,正在诞生中

    正文保留. 评论记录点滴.最后汇总.

  6. [转]Redis之七种武器

    长生剑.孔雀翎.碧玉刀.多情环.离别钩.霸王枪.拳头是古龙笔下的七种武器,而本文打算将Redis的几种使用方式 Strings.Hashs.Lists.Sets.Sorted Sets.Pub/Sub ...

  7. viojs1908无线网路发射器选址

      描述 随着智能手机的日益普及,人们对无线网的需求日益增大.某城市决定对城市内的公共场所覆盖无线网. 假设该城市的布局为由严格平行的 129 条东西向街道和 129 条南北向街道所形成的网格状,并且 ...

  8. linux Ubuntu(Segmentation fault)段错误出现原因及调试方法

      在linux下编译了一个程序,尝试运行的时候出现: Segmentation fault (core dumped) 初步确认为...完全不知道是什么玩意. 于是找度娘了. ----------- ...

  9. video标签的属性和方法总结

    最近想做一个弹幕插件,查了很多video标签的属性和方法 error属性 在正常读取时候,使用媒体数据的过程中,video元素或audio元素的error属性为null,但是任何时候只要出现错误,er ...

  10. Hyper-V初涉_Hyper-V虚拟机文件交换

    使用虚拟机时,文件交互就显得十分重要.如果能实现物理机与虚拟机之间的文件交互,将会节省大量的时间.比较可惜的是,Hyper-V虚拟机并不支持USB存储设备,所以在文件交换上略显麻烦. 与Hyper-V ...