成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C#開源輕量級對象數據庫NDatabase介紹

開發 后端
NDatabase是一個易于使用的.NET對象數據庫。為了避免關系數據庫帶來的開銷,可以嘗試用NDatabase。NDatabase是新一代的面向對象數據庫:1個原生的.NET數據庫持久層。它的主要特征有以下幾點。

 

今天向大家介紹一款.NET下的開源輕量級對象數據庫NDatabase,花了1天時間看了一下文檔和一些例子。覺得有必要把一些東西整理成中文文檔,也方便大家。本來想把以前的一個小項目改造一下,做一個例子的。無奈,時間不是很充足,還要忙著找工作。所以大家自己看看,這個數據庫在某些方面還是很有用的。下面的總計都是按照官方文檔進行翻譯的,稍微去掉和修改了一些,總結了一下該數據庫的一些特點和特性。然后把重點寫出來了。簡單的增刪查改在后門的例子中。翻譯水平有限,敬請指點:

1.前言

NDatabase是一個易于使用的.NET對象數據庫。為了避免關系數據庫帶來的開銷,可以嘗試用NDatabase。NDatabase是新一代的面向對象數據庫:1個原生的.NET數據庫持久層。它的主要特征有:

·簡單:NDatabase非常簡單,很容易學習上手使用;它API是簡單,不需要學習任何數據庫映射技術;不需要對象和存儲持久層之間的映射;NDatabase以最簡單的方式存儲對象;不需要安裝和管理。

·小:NDatabase 運行時小于300Kb,部署程序的時候,很容易集成到.NET應用程序中去。

·安全健壯:NDatabase支持ACID事務處理,保證數據的完整性。即使在硬件故障的情況下,所有的提交工作都會應用到數據庫,在下一次啟動的時候自動執行。

·單一數據庫文件:NDatabase使用單一的文件存儲所有的數據,包括元數據,對象,索引等。

·生產率:NDatabase使用很少的代碼來進行數據持久化,不需要映射。因此,開發人員可以專注于業務邏輯的實現,而不是在數據持久層浪費時間。

2.NDatabase入門

2.1 基礎設置

NDatabase中所有的數據庫引擎設置都在OdbConfiguration類中。如BTree Validation,和BTree index degree的設置都在這個類里面,打開日志的設置也在這個類里面。NDatabase提供了默認的日志類實現:ConsoleLogger,可以使用OdbConfiguration類中的EnableConsoleLogger方法進行設置。實現好自定義的日志類后,還需要進行注冊RegisterLogger方法,才能夠使用。

  1. OdbConfiguration.RegisterLogger(new Log4NetLogger()); 

2.2 使用索引

使用IOdb接口的IndexManagerFor方法可以為指定類型添加索引,如:

  1. using (var odb = OdbFactory.Open("index1.ndb")) 
  2.  { 
  3.      var fields = new[] { "Name" }; 
  4.      odb.IndexManagerFor<Player>().AddUniqueIndexOn("nameIndex", fields); 
  5.      odb.IndexManagerFor<Game>().AddIndexOn("nameIndex"new[] { "Result" }); 
  6.  } 

2.3 使用事務

NDatabase可以使用事務來保證數據的完整性(ACID:原子性,一致性,隔離性,持久性)。當一個NDatabase被打開后,將會自動創建一個會話,包含一個特殊的當前事務對象,這個事務對象實例管理當前所有的數據和數據操作行為。

2.4 內存數據庫模式

NDatabase可以將數據庫所有數據直接加載到內存中,直接使用OdbFactory方法的 OpenInMemory即可。 

2.5 關于觸發器

要增加一個觸發器,首先要建立一個實現了Trigger 接口()的類,該接口有4種可用的類型(InsertTrigger,UpdateTrigger,SelectTrigger,DeleteTrigger)。如:

  1. public class MyTrigger : InsertTrigger 
  2.  { 
  3.      public override bool BeforeInsert(object obj) 
  4.      { return true; }  
  5.      public override void AfterInsert(object obj, OID oid) 
  6.      { } 
  7.  } 

在使用過程中,打開數據庫后,要注冊觸發器,才能使用:

  1. var mage = new Mage("Merlin", 3.3, 3.4); 
  2.  var myTrigger = new MyTrigger();  
  3.  using (var odb = OdbFactory.Open("inserting_trigger.db")) 
  4.  { 
  5.      odb.TriggerManagerFor<Mage>().AddInsertTrigger(myTrigger); 
  6.      odb.Store(mage); 
  7.  } 

2.6 擴展數據庫架構

在數據庫的使用周期中,類型的定義可能會改變,NDatabase提供了重構管理接口,可以擴展數據庫架構,使用IRefactorManager可以重命名類型名稱和字段名稱,以及增加和刪除字段。如下列代碼:

  1. using (var odb = OdbFactory.Open("Refactoring.odb")) 
  2.  { 
  3.      var refactorManager = odb.GetRefactorManager(); 
  4.      refactorManager.RenameField(typeof(User), "age""_age"); 
  5.      refactorManager.RenameField(typeof(User), "name""_name"); 
  6.  } 

2.7 自定義日志接口

2.1節中提到了日志的配置,可以自定義日志類,注冊后使用,如下所示:

  1. public class Log4NetLogger : ILogger 
  2.  { 
  3.      private static readonly ILog Log = LogManager.GetLogger(typeof (ILogger));  
  4.      #region Implementation of ILogger  
  5.      public void Warning(string message) 
  6.      {  Log.Warn(message); }  
  7.      public void Debug(string message) 
  8.      {  Log.Debug(message);}  
  9.      public void Info(string message) 
  10.      {  Log.Info(message); }  
  11.      public void Error(string message) 
  12.      {  Log.Error(message);}  
  13.      public void Error(string message, Exception t) 
  14.      { 
  15.          Log.Error(message); 
  16.          Log.ErrorFormat("Error: {0}, exception: {1}", t.Message, t); 
  17.      } 
  18.      #endregion 
  19.  } 

2.8 異常處理

NDatabase使用內部的異常處理類型來處理錯誤,以下是NDatabase中的異常類型:

BTreeException

BTreeNodeValidationException

DuplicatedKeyException

CorruptedDatabaseException

LinqQueryException

2.9 非持久屬性

如果有一些屬性不想保存到數據庫,可以使用[NonPersistent]屬性。 

3.實際使用的幾個例子

使用之前當然要先有實體類,例子的實體類采用最簡單的,這里有些地方就不寫出來了。

3.1  2個保存對象的例子

先看簡單的:

  1. var sport = new Sport("volley-ball"); 
  2. using (var odb = OdbFactory.Open(TutorialDb5MinName))//打開數據庫 
  3.     odb.Store(sport); 

再看復雜的:

  1. View Code  
  2.  var volleyball = new Sport("volley-ball"); 
  3.  var player1 = new Player("julia", DateTime.Now, volleyball); 
  4.  var player2 = new Player("magdalena", DateTime.Now, volleyball); 
  5.  var player3 = new Player("jacek", DateTime.Now, volleyball); 
  6.  var player4 = new Player("michal", DateTime.Now, volleyball); 
  7.  var team1 = new Team("Krakow"); 
  8.  var team2 = new Team("Skawina"); 
  9.  team1.AddPlayer(player1); 
  10.  team1.AddPlayer(player2); 
  11.  team2.AddPlayer(player3); 
  12.  team2.AddPlayer(player4); 
  13.  var game = new Game(DateTime.Now, volleyball, team1, team2); 
  14.  using (var odb = OdbFactory.Open(TutorialDb5MinName)) 
  15.      odb.Store(game); 

3.2 再看看幾個簡單的查詢例子

最簡單的,注釋就免了,都比較簡單

  1. using (var odb = OdbFactory.Open(TutorialDb5MinName)) 
  2.  { 
  3.      var query = odb.Query<Player>(); 
  4.      query.Descend("Name").Constrain("julia").Equal(); 
  5.      var players = query.Execute<Player>(); 
  6.      Console.WriteLine("\nStep 3 (Soda): Players with name julia"); 
  7.      foreach (var player in players) 
  8.          Console.WriteLine("\t{0}", player); 
  9.      Assert.That(players, Has.Count.EqualTo(1)); 
  10.  } 

看看這種,LINQ的查詢方式:

  1. using (var odb = OdbFactory.Open(TutorialDb5MinName)) 
  2.     var players = from player in odb.AsQueryable<Player>() 
  3.                   where player.Name.Equals("julia"
  4.                   select player; 
  5.     Console.WriteLine("\nStep 3 (Linq): Players with name julia"); 
  6.     foreach (var player in players) 
  7.         Console.WriteLine("\t{0}", player); 
  8.     Assert.That(players.Count(), Is.EqualTo(1)); 

簡單的例子就寫這么多吧。實際的還有很多靈活的操作,比如比較,查詢,還對表直接的關系等等。如果有興趣,適合你,可以看后面的資源鏈接。

4.NDatabase資源

1.開源網址:

https://ndatabase.codeplex.com/ 

http://ndatabase.wix.com/home#!overview/c18h9

http://ndatabase.net/

2.教程地址:

官方5分鐘入門使用教程

官方1分鐘入門使用教程

NDataBase教程及說明文檔

官方數據庫性能測試及對比

原文鏈接:http://www.cnblogs.com/asxinyu/archive/2013/02/20/2918066.html

 

責任編輯:張偉 來源: 博客園
相關推薦

2023-11-24 11:11:08

Python數據庫

2022-05-16 07:37:58

SQL 編輯器數據庫管理工具

2009-08-24 18:09:13

C#調用Oracle數

2025-02-06 08:06:05

2009-09-04 17:23:21

C#數據庫連接對象

2009-08-28 13:03:55

C#壓縮Access數

2009-07-17 14:38:51

輕量級Swing組件

2023-12-13 08:22:45

SQLite關系型數據庫

2024-01-09 08:50:32

LiteDB數據庫NoSQL

2009-09-03 17:21:51

C# VSProjec

2021-12-06 15:11:34

鴻蒙HarmonyOS應用

2009-08-11 13:35:13

C# Berkeley

2024-04-18 09:56:16

2021-08-31 14:58:52

鴻蒙HarmonyOS應用

2011-08-25 15:35:18

Lua游戲對象

2009-03-19 10:08:09

C#數據庫查詢

2011-07-04 15:14:49

C#

2009-08-25 17:28:23

C#創建DataSet

2019-03-10 20:55:11

瀏覽器Midori開源

2010-10-26 15:21:11

連接Oracle數據庫
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产在线一区观看 | 亚洲一区二区在线 | 亚洲毛片在线 | 日本久久www成人免 成人久久久久 | 黄网站在线播放 | 九九综合九九 | 97人人澡人人爽91综合色 | 欧美国产一区二区三区 | 日韩精品在线观看一区二区三区 | 国产在线观看一区二区三区 | 性高朝久久久久久久3小时 av一区二区三区四区 | 一区二区福利视频 | 91短视频网址 | 日韩在线视频播放 | 一区二区在线不卡 | 在线一级片 | 欧美日本在线观看 | 国产精品一区二区av | 久久国产精品一区二区三区 | 欧美日韩专区 | 99精品视频在线观看 | 久久精品国产免费高清 | 成人午夜视频在线观看 | 国产精品视频不卡 | 三级成人片 | 黄色毛片在线看 | 四虎成人免费视频 | 欧美一区二区网站 | 国产免费一区二区 | 三级成人在线 | 无码国模国产在线观看 | 国产美女一区二区三区 | 日韩欧美二区 | 国产精品亚洲综合 | 国产高清视频 | 亚洲精品久久久久久久久久久 | 国产激情一区二区三区 | 人人鲁人人莫人人爱精品 | 81精品国产乱码久久久久久 | 亚洲精品一区二区三区 | 国产9 9在线 | 中文 |