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

說(shuo)說(shuo)IUnitOfWork~認(ren)識IUnitOfWork,為什么(me)要出現IUnitOfWork接口

回到目錄

第一講 認識IUnitOfWork,為什么要出現IUnitOfWork接口
第二講 Linq to Sql與EntityFrameworks中的SubmtChanges()發生了(le)什(shen)么事
第三(san)講 方法完整(zheng)性(xing)與統一提(ti)交(jiao)不(bu)沖突
第四講(jiang) DbContext對象的創建應該向BLL層(ceng)公(gong)開
第五(wu)講 我的IUnitOfWork+Repository架構

     今天愉點(dian)時間,說(shuo)說(shuo)IUnitOfWork,它事(shi)實上(shang)(shang)(shang)是(shi)(shi)NHibernate上(shang)(shang)(shang)的(de)(de)東西,這(zhe)里(li)只(zhi)是(shi)(shi)借一(yi)下它的(de)(de)思(si)(si)(si)想,把咱們的(de)(de)EF和LinqToSql也優化一(yi)下,呵(he)呵(he)!對(dui)于(yu)IUnitOfWork它的(de)(de)中文是(shi)(shi)操作單(dan)(dan)元的(de)(de)意思(si)(si)(si),顧(gu)名思(si)(si)(si)義,就(jiu)是(shi)(shi)將多個操作放在(zai)一(yi)個單(dan)(dan)元中,把操作原子化,概念上(shang)(shang)(shang)有點(dian)像事(shi)務,但事(shi)實上(shang)(shang)(shang)并不是(shi)(shi),它主要(yao)是(shi)(shi)指對(dui)數(shu)據庫通信來說(shuo),統(tong)一(yi)完成一(yi)次提交(jiao),這(zhe)對(dui)于(yu)優化系統(tong)的(de)(de)性能(neng)是(shi)(shi)非常(chang)必(bi)要(yao)的(de)(de),接下來,我(wo)會分5講來說(shuo)明(ming)一(yi)下IUnitOfWork。

一  認識IUnitOfWork

我(wo)們一般(ban)對IUnitOfWork接口會定義如下元素:

    /// <summary>
    /// 工作(zuo)單(dan)元
    /// 提供一個保(bao)存方(fang)法,它可以對調(diao)用層(ceng)公開,為了(le)減少連庫次數(shu)
    /// </summary>
    public interface IUnitWork
    {
        /// <summary>
        /// 直接提交到(dao)數據(ju)庫(ku)
        /// </summary>
        void Save();
        /// <summary>
        /// 是否不提交到數據庫,默認值設為false,即(ji)提交到數據庫
        /// 它通常于數據上下文基類去實現
        /// </summary>
        /// <returns></returns>
        bool IsNotSubmit { get; set; }
    }

而這個接口往往由數據上下文去實現,我以entityframeworks為例,當你建立一個EDMX數據模型后,你可以再建立一個類文件來作為它的分部類,并實現IUnitWork接口,代碼如下:

namespace Domain.Entities
{
    public partial class backgroundEntities : Domain.Core.IUnitWork
    {
        #region IUnitWork 成員

        public void Save()
        {
         this.SaveChanges();
        }

        public bool IsNotSubmit
        {
            get;
            set;
        }
#endregion
    }
}

而(er)對于調用方來說,它通常是在具體的Repository類中(zhong)去實現的,最常見的就是“構造器注入”的方式(shi),看代(dai)碼:

事實(shi)上,在(zai)建立OrderRepository實(shi)例(li)時,需要將實(shi)現(xian)了IUnitWork接口的(de)數據上下(xia)文對(dui)象(xiang)(xiang)傳進(jin)來,然(ran)后統一(yi)(yi)進(jin)行(xing)操作。在(zai)BLL層調用DAL層時,你可以將多個DAL層的(de)Repository對(dui)象(xiang)(xiang)進(jin)行(xing)組件調用,只要保證(zheng)你的(de)IUnitwork上下(xia)文對(dui)象(xiang)(xiang)是唯一(yi)(yi)的(de)就可以了。

二  為什么要出現IUnitOfWork接口

對于這個(ge)問題,一(yi)句話,就是(shi)為了減少與(yu)數據庫通(tong)訊的(de)次數,這一(yi)點在以后的(de)課程中會著重講(jiang)解的(de),今天就不多說了!

祝各位晚安!

回到目錄

posted @ 2013-03-12 22:40  張占嶺  閱讀(11089)  評論(1)    收藏  舉報