博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
XMLDatabase项目已经发布到nuget gallery
阅读量:5093 次
发布时间:2019-06-13

本文共 6436 字,大约阅读时间需要 21 分钟。

如果你在使用Visual Studio 2010,你应该了解nuget。如果你还是不了解,可以参考下面这些介绍

 

今天介绍一下,之前我开发过的一个开源数据库项目(XMLDatabase)也已经发布到了unget gallery,有兴趣的朋友可以在项目中使用

该项目的永久位置在:

该项目的文档和范例程序在:

以前在我的博客中也讨论过这个项目

回过去看这些文字,一晃又是两年快要过去了啊,虽然又是感慨时间是过得真快。呵呵

这个项目上次发布之后,我在一些项目中用过,还没有大面积使用。源代码也没有太太改动,之前有些朋友跟我联系过,期间也修正了一些小的bug。以后看情况也可能会继续做些升级。例如支持Silverlight等。(目前还没有时间表)

如果有兴趣的朋友,也可以研究一下代码,我也欢迎大家提出一些建设性的建议和想法。

 

如何在你的项目中使用它呢?你需要确保你安装好了nuget这个插件。如果你还没有下载,请访问官方站点

如果安装好了,则可以在项目中,选择“References”,右键,然后选择”Manag NuGet Packages…”

然后在接下来的这个对话框中,输入xmldatabase进行搜索,就可以找到这个package

点击“install”按钮,会有一个License Acceptance的对话框。该开源项目使用的协议是:Microsoft Public License (Ms-PL)

点击“I Accept”,就可以完成安装

完成安装之后,会自动添加好dll引用,而且会有一个readme文件,帮助大家更好地了解这个开源项目

【备注】目前只支持.NET Framework 3.5和.NET Framework 4.0

 

然后,你可以参考下面范例代码进行数据库的操作

using System;using System.Collections.Generic;using System.Linq;using System.Text;#region 添加两个命名空间using XmlDatabase.Core;using DataEntities;#endregionnamespace SampleApp{    class Program    {        static void Main(string[] args)        {            //这个程序演示了XmlDatabase的简单使用方式.注意,目前的版本是alpha,后续可能还会有所更改            //第一步:创建或者打开一个数据库            using (XDatabase db = XDatabase.Open("Test"))            {                //如果要重定向日志输出,请使用下面的语法即可                db.Log = Console.Out;                #region //第二步:创建几个数据实体类型.                //值得说明一下,这些数据实体类型没有任何特殊的要求,不需要添加任何的Attribute。但最好是遵守以下的两条简单的规则                //1.属性都是可读可写的,都是Public的                //2.重写ToString方法,这是为了让引擎在做日志记录的时候用的                Customer customer = new Customer()                {                    CustomerID = "ALFKI",                    CompanyName = "Alfreds Futterkiste",                    Country = "Germany",                    Region = "BC",                    City = "Berlin",                    ContactName = "Maria Anders",                    Address = "Obere Str. 57"                };                Employee employee = new Employee()                {                    EmployeeId = 1,                    FirstName = "Nancy",                    LastName = "Davolio",                    Title = "Sales Representative"                };                Product product = new Product()                {                    ProductId = 1,                    ProductName = "Chai"                };                                Order Order = new Order()                {                    OrderID = 10248,                    OrderDate = DateTime.Now,                    Customer = customer,                    Employee = employee,                    OrderItems = new List
() { new OrderItem(){ Product=product, UnitPrice=20.5m, Quantity=3 }, new OrderItem(){ Product=new Product(){ ProductId=2, ProductName="Grandma's Boysenberry Spread"}, UnitPrice=333, Quantity=1 } } }; #endregion //第三步:插入对象 db.Store(Order);//只要调用该方法就可以了。默认情况下,这是立即生效的 Customer c = new Customer() { CustomerID = "ABCD" }; db.Store(c); var cs = db.Query
().First(); Console.WriteLine(cs); //第四步:读取对象 (这里还可以做任何的LINQ查询操作) var query = from o in db.Query
() where o.OrderID==10248 select o; Order firstOrder = query.First(); Console.WriteLine("{0},总金额为:{1}", firstOrder, firstOrder.OrderItems.Sum(i => i.Quantity * i.UnitPrice)); //第五步:更新对象 firstOrder.OrderID = 10249;//假设我们修改一下订单编号 //你还可以对该对象做任何的修改,例如增加一个订单记录 firstOrder.OrderItems.Add(new OrderItem() { Product = new Product() { ProductId = 3, ProductName = "Mishi Kobe Niku" }, UnitPrice = 10000, Quantity = 1 }); db.Store(firstOrder);//更新的语法与刚才插入的时候是一模一样的,内部会判断出来到底是更新还是新增 Console.WriteLine("{0},总金额为:{1}", firstOrder, firstOrder.OrderItems.Sum(i => i.Quantity * i.UnitPrice)); //第六步:删除对象 db.Delete(firstOrder); //第七步:批处理(上面的操作都是立即生效的,如果操作数不多的话,很简单也很直接,但因为每次都涉及到数据文件的读写,如果我们有一个循环,要批量做一些事情,则可能会有性能方面的问题,所以下面提供了批处理模式) //首先得将数据库的模式切换到批处理模式 db.AutoSubmitMode = false; for (int i = 0; i < 10; i++) { Order temp = new Order() { OrderID = 10248, OrderDate = DateTime.Now, Customer = customer, Employee = employee, OrderItems = new List
() { new OrderItem(){ Product=product, UnitPrice=20.5m, Quantity=3 }, new OrderItem(){ Product=new Product(){ ProductId=2, ProductName="Grandma's Boysenberry Spread"}, UnitPrice=333, Quantity=1 } } }; db.Store(temp);//语法还是一模一样的 } //区别在于,如果是批处理模式,则必须明确地调用SubmitChanges才生效 XSubmitStatus status = db.SubmitChanges(); //这个SubmitChanges方法默认情况下,如果遇到某个操作出错,那么后面的操作就不会进行了。 //如果希望出错后继续,那么应该使用下面的语法 //XSubmitStatus status=db.SubmitChanges(true); //第八步:事务性操作 //要进行事务性操作,必须处于批处理模式中。我最后将它做了简化,调用下面的方法即可 //XSubmitStatus status = db.SubmitChangesWithTransaction(); //第九步:关闭数据库 db.Close(); } Console.Read(); //后续任务 } }}

 

希望这样可以更加方便大家使用这个组件。如果有什么反馈建议,请给我留言或者邮件。

 

 

 

最后,很多朋友可能都感兴趣,我自己如何发布Package呢?其实不难,请参考下面的两个链接

Creating and Publishing a Package

 

Using A GUI (Package Explorer) to build packages

转载于:https://www.cnblogs.com/chenxizhang/archive/2011/06/25/2090180.html

你可能感兴趣的文章
2019省赛训练组队赛4.11周四 2014浙江省赛
查看>>
HDU 2084 数塔
查看>>
android 界面切换【转】
查看>>
JavaScript我学之七数组
查看>>
BETA冲刺(6/7)
查看>>
Poj(2679),SPFA,邻接表(主流写法)
查看>>
乘风破浪:LeetCode真题_027_Remove Element
查看>>
HDU 1269 裸奔的强联通分量
查看>>
[推荐]WebService开发知识介绍
查看>>
centos6.8下安装dc2012
查看>>
javascript设计模式之发布订阅模式
查看>>
读《突然就走到了西藏》 | 保持呼吸,继续向前
查看>>
微软SQLHelper.cs类 中文版
查看>>
css字体及css文本控制
查看>>
ziplist之详细分析
查看>>
注册表
查看>>
python日记
查看>>
Kubernetes (1.6) 中的存储类及其动态供给
查看>>
java grpc简单例子
查看>>
hadoop学习笔记(二):centos7三节点安装hadoop2.7.0
查看>>