zoukankan      html  css  js  c++  java
  • 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 = 0,
                        Operator = "admin",
                        ParentID = null,
                        SortNumber = 0,
                        Status = 1,
                        UpdateDate = DateTime.Now,
                    };
                    context.WebDepartments.Add(department);
                    context.SaveChanges();
                    #endregion
    
                    #region 菜单表
                    var menu = new WebManageMenus
                    {
                        About = "",
                        LinkUrl = "",
                        MenuLevel = 1,
                        MenuName = "",
                        Operator = "admin",
                        ParentID = null,
                        SortNumber = 0,
                        Status = 1,
                        UpdateDate = DateTime.Now,
                    };
                    context.WebManageMenus.Add(menu);
                    context.SaveChanges();
                    #endregion
    
                    base.Seed(context);
                }
                catch (Exception)
                {
    
                    throw;
                }
    
    
            }
        }

    感谢各位的阅读,希望本文章可以帮到您!

    回到目录

  • 相关阅读:
    B-S 期权定价模型
    可转债溢价率
    队列模拟递归遍历目录(广度遍历)
    栈模拟递归遍历目录(深度遍历)
    什么人适合学习Django?
    Python学习笔记———递归遍历多层目录
    树莓派开机自启动程序的设置,两步即可。
    7行代码对百万张照片统一改名。
    tornado上帝视角第一次建立WEB服务器
    武沛齐模态对话框课堂作业
  • 原文地址:https://www.cnblogs.com/lori/p/5234709.html
Copyright © 2011-2022 走看看