久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔
站長(zhǎng)百科 | 數(shù)字化技能提升教程 數(shù)字化時(shí)代生存寶典
首頁(yè)
數(shù)字化百科
電子書
建站程序
開發(fā)
服務(wù)器
辦公軟件
開發(fā)教程
服務(wù)器教程
軟件使用教程
運(yùn)營(yíng)教程
熱門電子書
WordPress教程
寶塔面板教程
CSS教程
Shopify教程
導(dǎo)航
程序頻道
推廣頻道
網(wǎng)賺頻道
人物頻道
網(wǎng)站程序
網(wǎng)頁(yè)制作
云計(jì)算
服務(wù)器
CMS
論壇
網(wǎng)店
虛擬主機(jī)
cPanel
網(wǎng)址導(dǎo)航
WIKI使用導(dǎo)航
WIKI首頁(yè)
最新資訊
網(wǎng)站程序
站長(zhǎng)人物
頁(yè)面分類
使用幫助
編輯測(cè)試
創(chuàng)建條目
網(wǎng)站地圖
站長(zhǎng)百科導(dǎo)航
站長(zhǎng)百科
主機(jī)偵探
IDCtalk云說(shuō)
跨境電商導(dǎo)航
WordPress啦
站長(zhǎng)專題
網(wǎng)站推廣
網(wǎng)站程序
網(wǎng)站賺錢
虛擬主機(jī)
cPanel
網(wǎng)址導(dǎo)航專題
云計(jì)算
微博營(yíng)銷
虛擬主機(jī)管理系統(tǒng)
開放平臺(tái)
WIKI程序與應(yīng)用
美國(guó)十大主機(jī)
編輯“
SPB-設(shè)計(jì)機(jī)制-序列化字段
”
人物百科
|
營(yíng)銷百科
|
網(wǎng)賺百科
|
站長(zhǎng)工具
|
網(wǎng)站程序
|
域名主機(jī)
|
互聯(lián)網(wǎng)公司
|
分類索引
跳轉(zhuǎn)至:
導(dǎo)航
、?
搜索
警告:
您沒有登錄。如果您做出任意編輯,您的IP地址將會(huì)公開可見。如果您
登錄
或
創(chuàng)建
一個(gè)賬戶,您的編輯將歸屬于您的用戶名,且將享受其他好處。
反垃圾檢查。
不要
加入這個(gè)!
<span style="text-align:center; border:1px solid #000; float:right; padding:6px;"><strong>導(dǎo)航:</strong> [[SpaceBuilde二次開發(fā)手冊(cè)|上一頁(yè)]]</span> <div style="clear:both;"></div> 在產(chǎn)品的不斷完善過(guò)程中或者二次開發(fā)過(guò)程中,經(jīng)常需要對(duì)現(xiàn)有的對(duì)象增加新的屬性。通常情況下,為了應(yīng)對(duì)這些變化需要在數(shù)據(jù)庫(kù)的相應(yīng)表中預(yù)留字段(當(dāng)然不預(yù)留字段就需要修改[[數(shù)據(jù)庫(kù)]]中的表、修改相應(yīng)的存儲(chǔ)過(guò)程或[[sql]]語(yǔ)句、修改數(shù)據(jù)訪問(wèn)層…),然后在使用時(shí)賦予具體的含義。 這樣做最常見的一個(gè)結(jié)果就是使數(shù)據(jù)庫(kù)中的一些字段異常混亂。 在[[SpaceBuilder]]中,我們針對(duì)這種需求使用了序列化字段,下面介紹數(shù)據(jù)序列化的原理及如何使用數(shù)據(jù)序列化。 '''一、數(shù)據(jù)庫(kù)的存儲(chǔ)格式''' 在數(shù)據(jù)庫(kù)中的存儲(chǔ)格式如下圖所示,所有需要序列化的數(shù)據(jù)全部存儲(chǔ)到PropertyNames(存儲(chǔ)屬性名稱及PropertyValues中對(duì)應(yīng)的存儲(chǔ)位置)、PropertyValues(存儲(chǔ)屬性的具體數(shù)據(jù))兩個(gè)字段中。 先分析一下存儲(chǔ)的數(shù)據(jù),首先是PropertyNames字段 “EnableRatings:S:0:4:EnableTrackBacks:S:4:4:CommentModerationType:S:8:4:” ,“EnableRatings”其實(shí)是在實(shí)體類中定義的一個(gè)屬性名稱,“:”表示定義完畢,“S:0:4”表示在PropertyValues字段中的字符從0開始后面4位屬于“EnableRatings”的屬性值,同理:“S:4:4”表示,從第四個(gè)字符開始,后面5個(gè)表示“EnableTrackBacks”的屬性值,依次類推可以獲得PropertyNames所有的字段的值。(其中S代表存儲(chǔ)格式是字符串,由于目前全部以字符串存儲(chǔ)所以不需特別關(guān)注)。 這樣我們就利用PropertyNames、PropertyValues兩個(gè)字段存儲(chǔ)任意多個(gè)數(shù)據(jù)項(xiàng),而且不用對(duì)操作數(shù)據(jù)庫(kù)的存儲(chǔ)過(guò)程或sql語(yǔ)句做任何更改,這就為SpaceBuilder的數(shù)據(jù)序列化奠定了數(shù)據(jù)存儲(chǔ)基礎(chǔ)。 [[Image:Spacebuilder091.jpg]] '''設(shè)計(jì)參考''': 借鑒了[[asp.net]] 2.0的Profile。Profile的功能是管理用戶個(gè)人資料,而用戶個(gè)人資料在不同的項(xiàng)目中會(huì)有不同的需求(比如:年齡、性別、興趣、愛好、畢業(yè)院校…),而Profile作為一個(gè)通用的功能必須滿足這些具體的需求,它同樣采取了類似的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),如下圖所示。 Profile采用了3個(gè)字段對(duì)擴(kuò)展屬性進(jìn)行存儲(chǔ): #PropertyNames同樣存儲(chǔ)屬性名稱及在PropertyValuesString或PropertyValuesBinary中的相應(yīng)數(shù)據(jù)的存儲(chǔ)位置,并以S及B確定數(shù)據(jù)是以字符串形式還是二進(jìn)制形式存儲(chǔ); #PropertyValuesString存儲(chǔ)屬性的字符串?dāng)?shù)據(jù); #PropertyValuesBinary存儲(chǔ)屬性的[[二進(jìn)制]]數(shù)據(jù); [[Image:Spacebuilder092.jpg]] 當(dāng)然Profile為了做到更加容易對(duì)Profile擴(kuò)展新的屬性,還支持在web.config中通過(guò)配置文件來(lái)增加新屬性。 '''二、如何使用數(shù)列化數(shù)據(jù)''' *首先確保需要使用序列化字段的實(shí)體類從SpaceBuilder.Common.ExtendedAttributes派生。 例如:User,如下圖所示: [[Image:Spacebuilder093.jpg]] ExtendedAttributes主要方法如下: [[Image:Spacebuilder094.jpg]] 在ExtendedAttributes的派生類我們可以方便的通過(guò)GetBool、GetInt、GetDouble、GetString、GetExtendedAttribute<T>獲取相應(yīng)的屬性值。GetSerializerData、SetSerializerData一般用于把對(duì)象存儲(chǔ)到數(shù)據(jù)庫(kù),或從數(shù)據(jù)庫(kù)取出數(shù)據(jù)并生成對(duì)象的過(guò)程使用(參見2)。 '''例如''',我們可以定義AvatarUrl序列化屬性,該屬性的代碼如下: <pre> /// <summary> /// 用戶頭像文件名稱 /// </summary> public string AvatarUrl { get { return GetExtendedAttribute("avatarUrl"); } set { SetExtendedAttribute("avatarUrl", value); } </pre> } *在數(shù)據(jù)庫(kù)的表中增加PropertyNames、PropertyValues兩個(gè)字段,一般設(shè)置PropertyNames、PropertyValues的類型為ntext。 進(jìn)行對(duì)象持久化時(shí)(即存儲(chǔ)到數(shù)據(jù)庫(kù)),需要編寫如下代碼: <pre> SerializerData data = user.GetSerializerData(); myCommand.Parameters.Add("@PropertyNames", SqlDbType.NText).Value = data.Keys; myCommand.Parameters.Add("@PropertyValues", SqlDbType.NText).Value = data.Values; </pre> 從數(shù)據(jù)庫(kù)取出數(shù)據(jù)生成對(duì)象時(shí),一般需要編寫如下代碼: <pre> SerializerData data = new SerializerData(); if (dr["PropertyNames"] == DBNull.Value) data.Keys = ""; else data.Keys = dr["PropertyNames"] as string; if (dr["PropertyValues"] == DBNull.Value) data.Values = ""; else data.Values = dr["PropertyValues"] as string; user.SetSerializerData(data); </pre> ==參考資料== *[http://doc.spacebuilder.cn SpaceBuilder官方] [[category:SpaceBuilder|S]]
摘要:
請(qǐng)注意,您對(duì)站長(zhǎng)百科的所有貢獻(xiàn)都可能被其他貢獻(xiàn)者編輯,修改或刪除。如果您不希望您的文字被任意修改和再散布,請(qǐng)不要提交。
您同時(shí)也要向我們保證您所提交的內(nèi)容是您自己所作,或得自一個(gè)不受版權(quán)保護(hù)或相似自由的來(lái)源(參閱
Wordpress-mediawiki:版權(quán)
的細(xì)節(jié))。
未經(jīng)許可,請(qǐng)勿提交受版權(quán)保護(hù)的作品!
取消
編輯幫助
(在新窗口中打開)
取自“
http://www.kktzf.com.cn/wiki/SPB-設(shè)計(jì)機(jī)制-序列化字段
”