温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C#基于Linq和反射如何实现数据持久化框架Xml4DB

发布时间:2021-08-07 09:13:44 来源:亿速云 阅读:228 作者:小新 栏目:编程语言

小编给大家分享一下C#基于Linq和反射如何实现数据持久化框架Xml4DB,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

如何使用Xml4DB

在Xml4DB中只有两个重要的类:XmlDB和XmlDBFactory,我们只需要使用XmlDBFactory就可以实现对XmlDB的创建。XmlDBFactory是一个静态工厂类,提供了三个方法:

1、CreatXmlDB()方法以覆盖式的方式创建数据库。当数据库文件不存在时,则创建数据库,如果数据库存在,则对数据库进行覆盖操作。此方法适合第一次创建数据库时使用。

2、LoadXmlDB()方法用于获取一个已经存在的数据库,如果数据库文件不存在将引发异常。

3、UpdateXmlDB()以升级方式创建XmlDB数据库,前提是数据库文件已经存在,且新创建的数据库的版本要比之前的版本高。

介绍完工厂类,我们来讲解数据库类XmlDB,在此类中我们定义了常见的数据库方法:

1、Insert()方法用于向数据库中插入一个对象

2、Read()方法用于从数据库读取一个或多个对象,返回List<T>

3、Delete()方法用于从数据库中删除一个或多个对象

4、Update()方法用于将一个或多个对象的值修改为对应的相同类型的值

下面我们给出一个示例程序代码:

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml.Linq; using Xml4DB;   namespace Xml4DB.Sample {   class Program   {     static void Main(string[] args)     {       //以覆盖方式创建XmlDB       XmlDB mDB = XmlDBFactory.CreatXmlDB("XmlDB示例程序","D:\\XmlDB演示程序\\Sample.xml",1);       //创建Student对象李逍遥       Student mStudent = new Student(1, "李逍遥", 18);       //插入Student对象李逍遥       mDB.Insert(mStudent);       //创建Student对象酒剑仙       mStudent = new Student(2, "酒剑仙", 37);       //插入Student对象酒剑仙       mDB.Insert(mStudent);       //创建Student对象赵灵儿       mStudent = new Student(3, "赵灵儿", 17);       //插入Student对象赵灵儿       mDB.Insert(mStudent);       //创建Student对象慕容紫英       mStudent = new Student(4, "慕容紫英", 20);       //插入Student对象慕容紫英       mDB.Insert(mStudent);       //提交修改       mDB.Commit();         //查询姓名为李逍遥的Student对象       List<Student> objects = mDB.Read(new Student(0, "李逍遥", 0));       //输出查询结果       Console.WriteLine(objects[0].ToString());         //将姓名为酒剑仙的对象中的姓名改为司徒钟,年龄改为40       mDB.Update(new Student(0, "酒剑仙", 0), new Student(0, "司徒钟", 40));       //删除ID为3的对象记录       mDB.Delete(new Student(3, null, 0));       mDB.Commit();         //读取全部的Student记录       objects = mDB.Read(new Student());       foreach (Student obj in objects)       {         Console.WriteLine(obj.ToString());       }         //等待以便观察结果       Console.ReadKey();     }       /// <summary>     /// XmlDB演示类     /// </summary>     public class Student     {       public Student()       {         }         public Student(int mID,string mName,int mAge)       {         this.mID = mID;         this.mName = mName;         this.mAge=mAge;       }         private int mAge;       public int Age       {         get { return mAge; }         set { mAge = value; }       }         private int mID;       public int ID       {         get { return mID; }         set { mID = value; }       }         private string mName;       public string Name       {         get { return mName; }         set { mName = value; }       }         public override string ToString()       {         return string.Format("ID={0},Name={1},Age={2}", this.ID, this.Name,this.Age);       }     }   } }

怎么样?是不是感觉很简单呢?这个项目采用了Xml作为数据存储的格式,所以最终的数据库文件就是一个Xml文件(这和序列化、反序列化类似),就像下面这样:

<?xml version="1.0" encoding="utf-8"?> <XmlDB DBName="XmlDB示例程序" DBVersion="1">  <Student>   <Age>18</Age>   <ID>1</ID>   <Name>李逍遥</Name>  </Student>  <Student>   <Age>37</Age>   <ID>2</ID>   <Name>酒剑仙</Name>  </Student>  <Student>   <Age>17</Age>   <ID>3</ID>   <Name>赵灵儿</Name>  </Student>  <Student>   <Age>20</Age>   <ID>4</ID>   <Name>慕容紫英</Name>  </Student> </XmlDB>

由于假期时间有限,所以目前这个项目只提供了对整型和字符型的基础类型的支持,后面将增加对它基本类型的支持;由于目前部分算法并不完善,所以目前这个项目不支持嵌套的类型属性,等后面有时间的话会逐步完善这个项目的。需要注意的是,在这个项目中整型的默认值为0,字符型的默认值为null,所以请不要给对象赋予这样的属性值,因为这样的对象将被排除,从而造成无法读取对象的问题。每一个对象实体都要默认给出一个不带参数的构造函数,因为内部构造中使用了反射技术,当根据一个类型来生成一个新实例时就会用到。

以上是“C#基于Linq和反射如何实现数据持久化框架Xml4DB”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI