在Forums中,有些內容是不固定的,例如用戶資料,除了一些基本資料,可能還要有一些其他資料信息,例如MSN、個人主頁、簽名檔等,一般對于這樣的都是每一個屬性對應于數據庫中的一個字段。但是如果以后我們因為需要增加一些屬性,例如QQ號、Blog地址等,如果還是用這種增加數據表字段的方法,那么將會頻繁的修改數據庫表結構、存儲過程、數據庫訪問的程序。
或許您也遇到過類似問題,看Forums中是怎么借用.Net的序列化和反序列化來解決的:例如我需要在用戶資料里面增加QQ號這個屬性,那么我只需要在User類中增加一個屬性public String QQIM?{??? get?{ return GetExtendedAttribute("QQIM");?}??? set?{ SetExtendedAttribute("QQIM",?value);?}}不需要修改數據庫表結構,不需要修改存儲過程,連數據庫訪問的程序都不需要動。
其具體實現的主要代碼:
實質上序列化機制是將類的值轉化為一個一般的(即連續的)字節流,然后就可以將該流保存到數據庫的某個字段中(在數據庫中forums_UserProfile表中有一個字段“StringNameValues varbinary(7500)”)。讀取的過程對對象進行反序列化時,創建出與原對象完全相同的副本。
注意一般這類屬性在數據庫中是不能被檢索到的,并且要這些屬性能被序列化。
posted on 2006-11-07 14:27 風雨兼程 閱讀(281) 評論(0) 編輯 收藏 所屬分類: Asp.net 2.0
Powered by: BlogJava Copyright © 風雨兼程