一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

淺談C#中的延遲加載(1)——善用委托

  很久以前就聽過延遲加載這個(gè)東西,不過沒有理解是什么意思,現(xiàn)在算是了解一二了,寫點(diǎn)文章作為讀書筆記,把自己的想法記錄一下,希望對(duì)初學(xué)者幫助,不管是初學(xué)者或者高手如果發(fā)現(xiàn)文章那里寫得不好或者有更好的思路和做法記得告訴我哦^^。文章打算寫成兩三篇,這個(gè)是第一篇。

  在三層結(jié)構(gòu)中我們通常會(huì)使用多一個(gè)叫做模型層的東西,這一層中最主要做的事情是把數(shù)據(jù)庫(kù)中的表 (或者其他數(shù)據(jù)源,例如xml或者自己定義的一種數(shù)據(jù)格式)轉(zhuǎn)成對(duì)應(yīng)的類,例如有一個(gè)文章表,這時(shí)候在這一層就會(huì)有一個(gè)文章類;文章類的屬性對(duì)應(yīng)著文章表的列,例如文章標(biāo)題屬性對(duì)應(yīng)文章標(biāo)題列。 實(shí)體類和數(shù)據(jù)表一一對(duì)應(yīng)是最簡(jiǎn)單的情況,這時(shí)候?qū)嶓w類和實(shí)體類是各自獨(dú)立存在的,沒有出現(xiàn)相互引用的關(guān)系。 但是,幾乎每一個(gè)數(shù)據(jù)庫(kù)中的表都是存在關(guān)聯(lián)關(guān)系的(關(guān)系型數(shù)據(jù)庫(kù)),例如除了文章表之外,還會(huì)有一個(gè)文章分類表,假如說每一篇文章都必須屬于一個(gè)分類,那么在數(shù)據(jù)庫(kù)中表現(xiàn)出來的就是文章表中有一個(gè)外鍵字段指向文章分類表的主鍵 ,在C#代碼中表示出來的是文章類中有一個(gè)屬性(文章分類ID),通過這個(gè)屬性我們就可以知道文章所屬的分類、并且可以準(zhǔn)確地通過代碼查詢數(shù)據(jù)庫(kù),獲取一個(gè)文章分類實(shí)體類的對(duì)象,讀取到文章所屬分類的相關(guān)信息。

  以上的過程看起來一點(diǎn)問題都沒有,整理一下思路,就是讀取數(shù)據(jù)庫(kù),獲取一個(gè)文章類對(duì)象,通過文字類對(duì)象中的文章分類ID的值,以這個(gè)值為查詢條件去數(shù)據(jù)庫(kù)中讀取數(shù)據(jù),獲取一個(gè)文章分類對(duì)象,當(dāng)然對(duì)數(shù)據(jù)庫(kù)的操作我們通常 是封裝在數(shù)據(jù)訪問層中。然而從面向?qū)ο蟮慕嵌瓤紤],我們會(huì)希望從文章類包含有文章分類的信息,用代碼表示文章分類和文章兩個(gè)實(shí)體類如下:

從上面的代碼可以看到,在文章實(shí)體類中出現(xiàn)了一個(gè)Model.ArticleCategory類型的屬性Category,我們想要的就是通過這個(gè)屬性直接讀取文章所屬分類的詳細(xì)信息。問題出現(xiàn)了,在數(shù)據(jù)庫(kù)訪問層中我們從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)去實(shí)例化一個(gè)文章實(shí)體類對(duì)象之后, 要選擇在什么時(shí)候去給Category賦值

  • 選擇一:立刻給通過分類ID(CategoryID屬性)去獲取所屬文章分類的對(duì)象,然后塞給文章所屬分類屬性(Category) ,然后再返回文章對(duì)象。這種方法在有一點(diǎn)不好,就是萬(wàn)一得到文章對(duì)象之后根本不用去使用到Category屬性顯然這種做法不佳。
  • 選擇二:在需要的時(shí)候再去讀取文章分類,然后給文章類對(duì)象的Category屬性賦值,但這和沒有這個(gè)屬性其實(shí)也沒有什么區(qū)別。
  • 選擇三:在Category屬性的get訪問器中實(shí)現(xiàn)讀取數(shù)據(jù)庫(kù)獲取文章分類的代碼,這樣如果沒有使用到Category屬性的 時(shí)候是不會(huì)調(diào)用到這些代碼的,也就不會(huì)去訪問數(shù)據(jù)庫(kù)拿東西了,為了避免每次訪問Category屬性都去讀取數(shù)據(jù)庫(kù), 我們給他增加一個(gè)所有字段,得到的代碼如下:
    c#代碼

    protected Model.ArticleCategory _category;
    public Model.ArticleCategory Category
    {
    get
    {
    if(_category == null)
    {
    // 創(chuàng)建文章分類數(shù)據(jù)訪問層對(duì)象
    Dal.ArticleCategory articleCategoryDal = new Dal.ArticleCategory();
    // 獲取文章分類
    _category = articleCategoryDal.GetArticleCategoryByCategoryID(CategoryID);
    }
    return _category;
    }
    // set訪問器就不需要了
    }

    NET技術(shù)淺談C#中的延遲加載(1)——善用委托,轉(zhuǎn)載需保留來源!

    鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 99视频都是精品热在线播放 | 日本精品一区二区三区在线视频| 午夜激情视频专区在线观看网站大全 | 国产美女在线精品观看 | 激情视频在线 | 在线观看亚洲精品国产 | 五月婷婷在线免费观看 | 国产成人精品视频免费大全 | 四虎影视免费永久在线观看黄 | 激情春色网 | 永久免费aavv视频播放 | 五月婷婷丁香 | 91九色国产| 中国一级大黄大片 | 高清一区二区三区四区五区 | 国产免费私拍一区二区三区 | 国产极品白嫩美女在线观看看 | 成人午夜视频在线 | 亚洲区一二三四区2021 | 久久国产乱子伦免费精品 | 久热99这里只有精品视频6 | 婷婷六月久久综合丁香可观看 | 4se视频在线观看 | 亚洲伊人久久大香线蕉苏妲己 | 久久国产精品99久久久久久老狼 | 国产精品亚洲一区二区三区 | 毛片午夜| 日韩一区在线播放 | 日本精品高清一区二区不卡 | 亚洲国产精品婷婷久久久久 | 国产精品无内丝袜高跟鞋 | 国产福利视精品永久免费 | 一男一女一级毛片 | 色网在线播放 | 婷婷四房| 好吊妞视频haodiaoniucom | 免费高清小黄站在线观看 | 国产成人乱码一区二区三区 | 国产91小视频在线观看 | 欧美日韩亚洲精品国产色 | 国产精品香蕉在线一区 |