前言
NDatabase是一個易於使用的NET對象數據庫為了避免關系數據庫帶來的開銷可以嘗試用NDatabaseNDatabase是新一代的面向對象數據庫個原生的NET數據庫持久層它的主要特征有
·簡單NDatabase非常簡單很容易學習上手使用它API是簡單不需要學習任何數據庫映射技術不需要對象和存儲持久層之間的映射NDatabase以最簡單的方式存儲對象不需要安裝和管理
·小NDatabase 運行時小於Kb部署程序的時候很容易集成到NET應用程序中去
·安全健壯NDatabase支持ACID事務處理保證數據的完整性即使在硬件故障的情況下所有的提交工作都會應用到數據庫在下一次啟動的時候自動執行
·單一數據庫文件NDatabase使用單一的文件存儲所有的數據包括元數據對象索引等
·生產率NDatabase使用很少的代碼來進行數據持久化不需要映射因此開發人員可以專注於業務邏輯的實現而不是在數據持久層浪費時間
NDatabase入門
基礎設置
NDatabase中所有的數據庫引擎設置都在OdbConfiguration類中如BTree Validation和BTree index degree的設置都在這個類裡面打開日志的設置也在這個類裡面NDatabase提供了默認的日志類實現ConsoleLogger可以使用OdbConfiguration類中的EnableConsoleLogger方法進行設置實現好自定義的日志類後還需要進行注冊RegisterLogger方法才能夠使用
OdbConfigurationRegisterLogger(new LogNetLogger())
使用索引
使用IOdb接口的IndexManagerFor方法可以為指定類型添加索引如
using (var odb = OdbFactoryOpen(indexndb))
{
var fields = new[] { Name };
odbIndexManagerFor<Player>()AddUniqueIndexOn(nameIndex fields)
odbIndexManagerFor<Game>()AddIndexOn(nameIndex new[] { Result })
}
使用事務
NDatabase可以使用事務來保證數據的完整性(ACID:原子性一致性隔離性持久性)當一個NDatabase被打開後將會自動創建一個會話包含一個特殊的當前事務對象這個事務對象實例管理當前所有的數據和數據操作行為
內存數據庫模式
NDatabase可以將數據庫所有數據直接加載到內存中直接使用OdbFactory方法的 OpenInMemory即可
關於觸發器
要增加一個觸發器首先要建立一個實現了Trigger 接口()的類該接口有種可用的類型(InsertTriggerUpdateTriggerSelectTriggerDeleteTrigger)如
public class MyTrigger : InsertTrigger
{
public override bool BeforeInsert(object obj)
{ return true; }
public override void AfterInsert(object obj OID oid)
{ }
}
在使用過程中打開數據庫後要注冊觸發器才能使用
var mage = new Mage(Merlin )
var myTrigger = new MyTrigger()
using (var odb = OdbFactoryOpen(inserting_triggerdb))
{
odbTriggerManagerFor<Mage>()AddInsertTrigger(myTrigger)
odbStore(mage)
}
[] [] []
From:http://tw.wingwit.com/Article/program/net/201311/16138.html