最近在寫**,個人對傳統資料庫天然牴觸,感覺非常繁冗,即便是entity framework也過於龐雜了,db4o這種輕量級且讀寫、配置都極其方便的新型資料庫非常適合我。
不過我發現db4o這麼多年發展下來,竟然仍舊沒多少中文資料可尋,很奇怪為什麼這麼優秀的資料庫國內使用率極低呢?於是我就想嘗試自己來寫一些心得什麼的,為db4o在國內的傳播盡微薄之力吧。
此次分享的是自己寫的工具類**,封裝了db4o的一種基本使用方式,高度優化了呼叫體驗,下面直接介紹用法,源**在文章末尾貼出。
如果是桌面應用的話,那就在程式開始時直接初始化即可:
//////db4o伺服器管理器
/// public
static db4oservermanager db4oservermanager=new db4oservermanager("
db.db4o
");
publicclass
public
override
void
dispose()
}
然後記得在web.config裡配置資料庫存放路徑:
<connectionstrings
>
<
add
name
="db4o"
connectionstring
/>
connectionstrings
>
建議採用lambda表示式方法呼叫:
//無返回值呼叫方法
//查詢相同id的物件,以進行更新,否則直接儲存將儲存為新物件
u.使用者資訊.名稱 =model.displayname;
//必須明確儲存子物件才能得到正確更新,因為預設貌似沒有開啟級聯更新(新建物件儲存時會預設自動儲存子物件,但更新物件時不會自動更新子物件)
q.store(u.使用者資訊);
});
//有返回值呼叫方法
下面是傳統一些的呼叫方式:
//////db4o伺服器訪問器。注意,對資料進行修改後必須釋放此物件才能真正的將更改提交到伺服器。建議配合using(var dbsa=new db4oserveraccessor(...))語句使用
/// //
resharper disable once inconsistentnaming
public
class
db4oserveraccessor : idisposable
//////
建構函式
/// ///
db4o伺服器管理器
public
db4oserveraccessor(db4oservermanager servermanager)
public
void store(object
o)
public idb4olinqqueryquery(predicatep)
public idb4olinqqueryqueryall()
public
int count(idb4olinqquerycollection)
public
int countall()
public
int count(predicatep)
public
int countallbyext()
return0;
}public
void delete(object
o)
public
void delete(predicatep)
}#region idisposable 成員
public
void
dispose()
#endregion
}
//////db4o伺服器管理器
/// //
resharper disable once inconsistentnaming
public
class
db4oservermanager : idisposable
private
void
openserver()
//////
開啟乙個客戶端例項
/// ///
客戶端例項
public
iobjectcontainer openclient()
catch
}//////
建立乙個伺服器訪問器物件。注意,對資料進行修改後必須釋放此物件才能真正的將更改提交到伺服器。
/// ///
乙個伺服器訪問器物件
public
db4oserveraccessor creataccessor()
//////
建立並訪問乙個伺服器訪問器物件。
/// ///
對伺服器訪問器物件的操作行為
public
void access(actionaction)
}//////
建立並訪問乙個伺服器訪問器物件,繼而獲得返回值。
/// ///
對伺服器訪問器物件的操作行為
///返回值型別
public t accessandreturn(funcaction)
return
v; }
#region idisposable 成員
public
void
dispose()
#endregion
}
db4o中的排序問題
在使用db4o做乙個真實的專案的時候,遇到乙個問題 問題描述 在cms系統中,經常要按照發表時間的逆序來排序顯示條目。在平面資料庫中,這非常容易做到,只要寫 order by xx就可以了。可是,db4o中,似乎沒有類似的支援。問題分析 可能是因為db4o把你所有的字段都作為乙個類,它也不知道你要排...
原始碼和文件分享 基於C 的類UNIX檔案系統
使用乙個普通的大檔案 如 c mydisk.img 稱之為一級檔案 模擬 unix v6 的乙個檔案卷,乙個檔案卷實際上就是一張邏輯磁碟,磁碟中儲存的資訊以塊為單位。每塊 512位元組。檔案目錄結構 檔案開啟結構 選作 磁碟快取記憶體 選作 檔案操作介面 void fformat 格式化檔案卷 vo...
原始碼和文件分享 基本MFC類框架的俄羅斯方塊遊戲
一 設計目的 pc遊戲早已在it行業形成了龐大的產業鏈,很多it企業都憑藉著自己雄厚的遊戲開發技術而佔據電子遊戲娛樂市場。俄羅斯方塊是一款風靡全球的pc機遊戲和掌上機遊戲,它造成的轟動與創造的經濟價值可以說是遊戲史上的一件大事。這款遊戲看似簡單卻變化無窮。通過該遊戲設計,達到以下目的 了解visua...