前言
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)
}
[] [] []