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

Lind.DDD.Repositories.EF層(ceng)介紹

回到目錄

Lind.DDD.Repositories.EF以(yi)(yi)下簡(jian)稱Repositories.EF,之所(suo)以(yi)(yi)把它從(cong)Lind.DDD中(zhong)拿出來,完全出于(yu)可插(cha)拔的(de)(de)(de)考慮(lv),讓大家(jia)都能休(xiu)會到(dao)IoC的(de)(de)(de)魅力,用(yong)到(dao)哪種(zhong)方法持久(jiu)化,就將(jiang)那個DLL放到(dao)應用(yong)程序中(zhong),完全不需要(yao)(yao)把所(suo)有(you)持久(jiu)化方式耦合到(dao)一個項(xiang)目(mu)里,這也是遵循了OCP的(de)(de)(de)原則(ze),對(dui)擴展是開放的(de)(de)(de),即(ji)你可以(yi)(yi)添加其它的(de)(de)(de)持久(jiu)化方式,在新的(de)(de)(de)項(xiang)目(mu)里;而不要(yao)(yao)在原有(you)的(de)(de)(de)項(xiang)目(mu)中(zhong)進(jin)行代碼的(de)(de)(de)修(xiu)改.

Repositories.EF做(zuo)為數據(ju)持久(jiu)化的(de)一種方式,它直(zhi)接(jie)繼承了Lind.DDD.IRepositories接(jie)口(kou)模塊,它實現了IRepository,IExtensionRepository和IOrderableRepository等倉(cang)儲操作,開發(fa)人員在使(shi)(shi)用時,可(ke)以(yi)根(gen)據(ju)自己的(de)需(xu)要去(qu)聲(sheng)明不同的(de)接(jie)口(kou)變量,以(yi)最小程度的(de)使(shi)(shi)用它,而不是所以(yi)時候都使(shi)(shi)用IExtensionRepository的(de)完(wan)整(zheng)接(jie)口(kou),如你的(de)類(lei)中只用到了實體的(de)添加,那你完(wan)全(quan)可(ke)以(yi)把對象聲(sheng)明成IRepository基本倉(cang)儲,這(zhe)樣你的(de)使(shi)(shi)用時,也(ye)更加清楚.

Repositories.EF項目結(jie)構很簡單,只(zhi)有(you)一(yi)個Repository的(de)實現,看(kan)一(yi)下結(jie)構圖

它(ta)內(nei)部使用了(le)IExtensionRepository接口,由于IExtensionRepository同時(shi)繼(ji)承了(le)IRepository和(he)IOrderableRepository,所以,EF在實現(xian)(xian)它(ta)時(shi),這(zhe)兩個基接口也(ye)會現(xian)(xian)時(shi)被實現(xian)(xian).

其實(shi)對(dui)于方法(fa)內部的(de)(de)實(shi)現(xian),大叔之(zhi)前的(de)(de)文章中已經介紹很多了(le),大叔可以自已進(jin)行(xing)查閱(yue),之(zhi)后(hou)這(zhe)個(ge)Repositories.EF倉儲(chu)在(zai)實(shi)現(xian)項目(mu)中不會出現(xian),它只會通過IoC在(zai)程序運行(xing)時動(dong)(dong)態生產出來,這(zhe)點(dian)大叔要清楚,不要把Repositories.EF引用到(dao)你的(de)(de)項目(mu)中使用,這(zhe)樣你的(de)(de)項目(mu)將(jiang)會變得(de)非常僵化(hua),很被動(dong)(dong),持久化(hua)無(wu)法(fa)自動(dong)(dong)切換,這(zhe)點(dian)要注意!

在具(ju)體項目(mu)中使用(yong)時,我們可以通過(guo)web.config去定(ding)義你持久(jiu)化的方(fang)式,在程序使用(yong)時,直接用(yong)Lind.DDD.IoC.ServiceLocator服(fu)務定(ding)位器(qi)即可.

        IExtensionRepository<Task_Info> taskRepository;
        public UserService()
        {          
            taskRepository = ServiceLocator.Instance.GetService<IExtensionRepository<Task_Info>>();
            taskRepository.SetDataContext(Db);
        }
  <unity xmlns="//schemas.microsoft.com/practices/2010/unity">
    <container>
      <!--泛型類型注入-->
      <register type="Lind.DDD.IRepositories.IRepository`1,Lind.DDD" mapTo="Lind.DDD.Repositories.EF.EFRepository`1, Lind.DDD.Repositories.EF" />
      <register type="Lind.DDD.IRepositories.IExtensionRepository`1,Lind.DDD" mapTo="Lind.DDD.Repositories.EF.EFRepository`1, Lind.DDD.Repositories.EF" />
    </container>
  </unity>

最后,我(wo)們(men)非常希(xi)望(wang)各位同學(xue)(xue)都學(xue)(xue)有所成...

回到目錄

posted @ 2015-12-25 16:08  張占嶺  閱讀(2226)  評論(1)    收藏  舉報