asp.net 今天在ASP.NET FORUMS中發現了一種至少對於我來說特殊的儲存思路,那就是通過BinaryFormatter將多個欄位進行映像序列化,作為映像儲存進資料庫,然後通過轉換成記憶體流再讀出來,這種做法對於需要儲存多個欄位的時候,非常的方便.不用再寫一長串的變數賦值.
首先看一看,與管理設定頁面相對應的一個執行個體類AspNetForums.Components.SiteSettings()
在SiteSettings()定義了
Hashtable settings = new Hashtable();
接下來,定義了很多的屬性,分別對應於頁面中所需要的欄位,這些屬性直接對應於Hashtable例如:
public int SiteSettingsCacheWindowInMinutes {
get {
string key = "SiteSettingsCacheWindowInMinutes";
if (settings[key] != null)
return (int) settings[key];
else
return 15;
}
set {
settings["SiteSettingsCacheWindowInMinutes"] = value;
}
}
也就是說他是用Hashtable的方式在儲存實體欄位內容,不同於我們經常使用屬性來表示.
接下來看看他是如何將這個Hashtable的內容放進資料庫進去的
SqlDataProvider類中有如下定義
public override void SaveSiteSettings(SiteSettings siteSettings) {
//定義一個映像序列化執行個體
BinaryFormatter binaryFormatter = new BinaryFormatter();
//定義一個記憶體流執行個體
MemoryStream ms = new MemoryStream();
byte[] b;