【原创】开源.NET下的XML数据库介绍及入门
2013-03-25 08:23
330 查看
本博客所有文章分类的总目录:【总目录】本博客博文总目录-实时更新
本博客其他.NET开源项目文章目录:【目录】本博客其他.NET开源项目文章目录
1.完全基于XML的存储。数据库的配置信息和对象数据、索引、日志全部是用XML格式保存的。这样的出发点主要是XML数据格式很易于阅读和传输,转换。
2.基于文件夹的数据存储。这个作者曾经有些犹豫,有时候也觉得没必要,但如果关系复杂点的对象,还是有用的。
3.完全基于.NET编写,结合了LINQ的语法。这个数据库引擎也可以算是一个所谓的嵌入式的数据库引擎吧,它是通过一个dll提供了全部的功能。目前提供的查询是基于LINQ to Object的,所有的操作都是面向对象的。
4.目前有的功能主要是数据库的创建、打开和关闭,以及面向对象的增删查改,简单的批处理和事务控制等。
值得注意的是,我试了一下,好像不支持存储数组结构,所以是数组的,要手动转换一下。比如这个特征值,是double[]数组,用的时候,读出来,要转换为double[]才能用。格式嘛,自己定。看基本操作:
其实很简单,轻量级的操作就是保存和查询,更新,更新的操作很简单,和保存一样,内部会识别是新增的数据还是更新数据。查询的结果是IEnumerable<T>类型,所有可以很方便的使用LINQ来得到你所要的结果。
当然还可能有其他的一些功能,比如事务,我的工具太简陋,没有用上,可以研究下。
说明一下,不要也不要说功能有限,有时候我们的需求就这样,简单的可以就行,没必要搞那么复杂。OK,就算抛砖引玉吧,作者后来的更新也没有说明,如果使用,可以用Nuget来获取最新的安装包,地址看下节。
作者博客:http://www.cnblogs.com/chenxizhang/
Nuget地址:http://nuget.org/packages/XMLDatabase
本博客其他.NET开源项目文章目录:【目录】本博客其他.NET开源项目文章目录
1.前言
有时候尝试未必是坏事,不断尝试新事务,才能发现新东西,增加阅历,才能更容易面对复杂的情况。今天给大家带来的是一个.NET下开源的XML数据库。比较好用,轻量级,小巧,可以满足一些特殊的变态的需求。比如我这次遇到的。一个小得不能小的工具,本来用sqlite+XCode很快就可以搞定的东东,“领导”说非要用XML存储,那好吧。就用XML,虽然.NET操作XML很方便,但很好做。我的第一反应是找一个C#操作XML文件的类,应该差不多了。没想到就发现了XML数据库这么个玩意,试用,初步还是不错的,虽然有些小问题,也很久没更新了。代码资料还是老样子,规矩看前面的博客说明,不在提示了。2.XML Database初步介绍
XML Database是一套基于.NET 和 XML技术开发的数据库产品,开发者是博客园的陈希章。其定位是面向.NET开发平台的、小型的、面向对象的数据库,比较适合于本地数据缓存、嵌入式数据库应用的场景。上次更新日期是2011年了,没有仔细去研究源码,核心的程序集也才25K,所以够轻量级。那说说其基本特点,更新后的版本的说明没有找到,就看最老的版本的吧:1.完全基于XML的存储。数据库的配置信息和对象数据、索引、日志全部是用XML格式保存的。这样的出发点主要是XML数据格式很易于阅读和传输,转换。
2.基于文件夹的数据存储。这个作者曾经有些犹豫,有时候也觉得没必要,但如果关系复杂点的对象,还是有用的。
3.完全基于.NET编写,结合了LINQ的语法。这个数据库引擎也可以算是一个所谓的嵌入式的数据库引擎吧,它是通过一个dll提供了全部的功能。目前提供的查询是基于LINQ to Object的,所有的操作都是面向对象的。
4.目前有的功能主要是数据库的创建、打开和关闭,以及面向对象的增删查改,简单的批处理和事务控制等。
3.简单入门例子
存储是面向对象的,对每一条数据,都会有一个GUID编号,可以去看生成的XML文件得知。平时我们要存储在数据库的对象,一般就是实体了,那看看我这个实体的简单结构:/// <summary>人脸数据</summary> public class Faces { #region 属性 /// <summary>姓名</summary> public String Name { get; set; } /// <summary>年龄</summary> public Int32 Age { get; set; } /// <summary>性别</summary> public String Sex { get; set; } /// <summary>手机号码</summary> public String Tel { get; set; } /// <summary>图片位置</summary> public String Position { get; set; } /// <summary>图像的特征值,不支持存储数组类型,要转换才行</summary> public string Eigenvalue { get; set; } #endregion }
值得注意的是,我试了一下,好像不支持存储数组结构,所以是数组的,要手动转换一下。比如这个特征值,是double[]数组,用的时候,读出来,要转换为double[]才能用。格式嘛,自己定。看基本操作:
//数据库没有会自动创建 using (XDatabase db = XDatabase.Open(Main.DbName)) { //然后循环将特征值和图像对应起来,添加到数据库 for (int i = 0; i < 20; i++) { //添加图片信息 Faces cut = new Faces(); cut.Name = Names[i]; cut.Sex = Sexs[i]; cut.Tel = Teles[i]; cut.Age = Ages[i]; cut.Position = fileNames[i]; //添加特征值 cut.Eigenvalue = DoubleArrayToString (MeanB[i]); //保存到数据库 db.Store(cut); } //查询,结果是IEnumerable<T>类型,可以用LINQ操作 var t = db.Query<Faces>(); }
其实很简单,轻量级的操作就是保存和查询,更新,更新的操作很简单,和保存一样,内部会识别是新增的数据还是更新数据。查询的结果是IEnumerable<T>类型,所有可以很方便的使用LINQ来得到你所要的结果。
当然还可能有其他的一些功能,比如事务,我的工具太简陋,没有用上,可以研究下。
说明一下,不要也不要说功能有限,有时候我们的需求就这样,简单的可以就行,没必要搞那么复杂。OK,就算抛砖引玉吧,作者后来的更新也没有说明,如果使用,可以用Nuget来获取最新的安装包,地址看下节。
4.相关资源
开源网址:http://xmldatabase.codeplex.com/作者博客:http://www.cnblogs.com/chenxizhang/
Nuget地址:http://nuget.org/packages/XMLDatabase
相关文章推荐
- 开源.NET下的XML数据库介绍及入门
- [置顶]【原创】.NET开源压缩组件介绍与入门
- 【原创】开源Word读写组件DocX介绍与入门
- .NET开源压缩组件介绍与入门
- 【原创】.NET读写Excel工具Spire.Xls使用(1)入门介绍
- 【原创】.NET读写Excel工具Spire.Xls使用(1)入门介绍
- .NET开源压缩组件介绍与入门
- 【原创】.NET开源表达式计算组件介绍与使用
- 【原创】.NET开源表达式计算组件介绍与使用
- [置顶].NET平台开源项目速览(6)FluentValidation验证组件介绍与入门(一)
- .NET平台开源项目速览(6)FluentValidation验证组件介绍与入门(一)
- .NET开源项目介绍及资源推荐:数据持久层
- Facebook开源项目Hiphop-php使用介绍(原创)
- .NET平台开源项目速览(9)软件序列号生成组件SoftwareProtector介绍与使用
- 开源倾情奉献:基于.NET打造IP智能网络视频监控系统(五)客户端介绍
- .NET中开源文档操作组件DocX的介绍与使用
- .NET平台开源项目速览(9)软件序列号生成组件SoftwareProtector介绍与使用
- 原创开源项目HierarchyViewer for iOS 2.1 Beta新功能介绍
- 开源Word读写组件DocX介绍与入门