中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

EF架構~CodeFirst模型(xing)下的數據初始化

回到目錄

我為什么會來

在(zai)傳(chuan)統的(de)(de)(de)大型系統設計中,數(shu)據(ju)(ju)庫(ku)建(jian)模是個(ge)比(bi)開(kai)發(fa)更(geng)早的(de)(de)(de)環節,先有數(shu)據(ju)(ju)庫(ku),然后是ORM模型,最后才是開(kai)發(fa)程序,而這(zhe)種模型在(zai)EF出現后發(fa)生了轉變,而且有可能將(jiang)來會被code first取代,因為你(ni)的(de)(de)(de)關系型數(shu)據(ju)(ju)庫(ku)沒有必要定(ding)死,你(ni)在(zai)部(bu)署網站(zhan)時,沒人(ren)愿意(yi)(yi)先建(jian)立(li)一大堆SQL語(yu)句,誰都(dou)愿意(yi)(yi)在(zai)IIS上運行后,數(shu)據(ju)(ju)庫(ku)自動生成(cheng),無論是sqlserver,orcale,mysql它如果都(dou)是自動生成(cheng),那該(gai)多爽!事實上,這(zhe)種開(kai)發(fa)模型已經愉愉的(de)(de)(de)進(jin)入(ru)了我們(men)的(de)(de)(de)世(shi)界里,尤其是在(zai)第三(san)方服務(wu)器部(bu)署時,這(zhe)種code first讓你(ni)感覺(jue)更(geng)加方法,應該(gai)你(ni)不用在(zai)一個(ge)個(ge)建(jian)立(li)數(shu)據(ju)(ju)表了,像香港云這(zhe)種第三(san)方服務(wu)器,普(pu)通(tong)用戶不支持SQL命令,建(jian)立(li)表只能一個(ge)一個(ge)的(de)(de)(de)建(jian)立(li)。

數據初始化

而當你的(de)數據庫被建(jian)立(li)后,數據表的(de)信(xin)息也可以同時(shi)被初始化的(de),這也是今天要說的(de),它(ta)(ta)分于兩叔,第(di)一(yi)在(zai)config里開啟這個初始化功能,第(di)二建(jian)立(li)自己的(de)Initializer類,讓它(ta)(ta)實現DropCreateDatabaseIfModelChanges<YourContext>泛型方(fang)法即(ji)可,具體看一(yi)下代碼

一 配置(zhi)啟用(yong),將(jiang)web.config里的(de)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>

二 編(bian)寫(xie)初始(shi)化類代碼

    /// <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;
            }


        }
    }

感謝各(ge)位的閱(yue)讀,希望本文章可以(yi)幫到您!

回到目錄

posted @ 2016-03-02 13:58  張占嶺  閱讀(5993)  評論(2)    收藏  舉報