分享Db4o的便捷封裝類原始碼

2021-09-06 14:03:24 字數 2962 閱讀 7597

最近在寫**,個人對傳統資料庫天然牴觸,感覺非常繁冗,即便是entity framework也過於龐雜了,db4o這種輕量級且讀寫、配置都極其方便的新型資料庫非常適合我。

不過我發現db4o這麼多年發展下來,竟然仍舊沒多少中文資料可尋,很奇怪為什麼這麼優秀的資料庫國內使用率極低呢?於是我就想嘗試自己來寫一些心得什麼的,為db4o在國內的傳播盡微薄之力吧。

此次分享的是自己寫的工具類**,封裝了db4o的一種基本使用方式,高度優化了呼叫體驗,下面直接介紹用法,源**在文章末尾貼出。

如果是桌面應用的話,那就在程式開始時直接初始化即可:

///

///db4o伺服器管理器

/// public

static db4oservermanager db4oservermanager=new db4oservermanager("

db.db4o

");

public

class

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...