色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

淺談C#中的延遲加載(3)——還原模型的業(yè)務(wù)規(guī)則

  上一篇文章講到把實(shí)體類中需要實(shí)現(xiàn)延遲加載的屬性聲明為virtual,然后繼承實(shí)體類做一個(gè)子類,在子類里面實(shí)現(xiàn)該屬性,配合使用委托來(lái)實(shí)現(xiàn)比較完美的延遲加載(原本的模型層依舊保持在最底層用于貫穿三層結(jié)構(gòu),同時(shí)又可以實(shí)現(xiàn)在實(shí)體類的屬性里面訪問(wèn)到比他高層的數(shù)據(jù)訪問(wèn)層)。文章的最后依舊出現(xiàn)杯具,原因是在對(duì)模型的屬性實(shí)現(xiàn)延遲加載之前,這個(gè)屬性可能由于我們業(yè)務(wù)的需要,它并不單單是作為一個(gè)存儲(chǔ)和讀取的功能使用,而是在其get或者set的訪問(wèn)器中都包含這或許復(fù)雜或許簡(jiǎn)單的邏輯代碼。

  舉例:考慮一下這個(gè)情景,我們有一個(gè)叫做任務(wù)單的實(shí)體類,其中有兩個(gè)屬性,一個(gè)叫做任務(wù)名,一個(gè)叫做發(fā)布時(shí)間,現(xiàn)在有這樣的業(yè)務(wù)規(guī)定,任務(wù)名稱可以為空,但如果任務(wù)名稱為空的話我們要讀取發(fā)布時(shí)間生成一個(gè)任務(wù)名來(lái)代替掉這個(gè)空值(例如叫做Issue20110120191345),當(dāng)然這個(gè)例子有點(diǎn)牽強(qiáng),主要是我想不出什么很具體的實(shí)例,但是在實(shí)際開(kāi)發(fā)中這種情況肯定是有的并且其中的邏輯代碼有可能復(fù)雜到你難以想象。

  沿用前面兩篇文章的例子,我模擬了這一現(xiàn)象,對(duì)文章實(shí)體類做了點(diǎn)修改,增加了一個(gè)名為GetCategoryRecord的字符串型屬性,它的作用基本上可以從字面上看出來(lái),叫做Category屬性get訪問(wèn)器調(diào)用記錄。于是文章類(基類)修改如下:

c#代碼

namespace Model
{
// 文章實(shí)體類
public class Article
{
public int ArticleID { get; set; }
public string Title { get; set; }
public string Cotnent{ get; set; }
public DateTime CreateTime { get; set; }
public int CategoryID { get; set; }
/// <summary>
/// 所屬分類
/// </summary>
protected Model.ArticleCategory _category;
/// <summary>
/// 所屬分類
/// </summary>
public virtual Model.ArticleCategory Category
{
get
{
GetCategoryRecord
+= "獲取分類;";
return _category;
}
}
/// <summary>
/// Category屬性get訪問(wèn)器調(diào)用記錄
/// </summary>
public string GetCategoryRecord { get; set; }
}
}

NET技術(shù)淺談C#中的延遲加載(3)——還原模型的業(yè)務(wù)規(guī)則,轉(zhuǎn)載需保留來(lái)源!

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

主站蜘蛛池模板: 二连浩特市| 班玛县| 柯坪县| 高阳县| 汽车| 武功县| 遂昌县| 龙州县| 桐城市| 邻水| 淮阳县| 瑞丽市| 江达县| 乐昌市| 慈利县| 宁国市| 杭州市| 枣阳市| 张家口市| 安康市| 穆棱市| 青阳县| 马龙县| 神池县| 肥城市| 嫩江县| 灌云县| 囊谦县| 惠来县| 洪雅县| 泸西县| 个旧市| 乌兰县| 龙江县| 晋江市| 达拉特旗| 泗阳县| 剑川县| 西华县| 玉树县| 阜平县|