分享一个Db4o的基础类,扩展你的Db4o

嘎子 面向对象数据库 2016-07-16 685 次浏览 , 没有评论

我在前面也给大家分享了两个Db4o的第三方库(Db4o的第三扩展库的使用),使用这些第三方库为使你写代码的效率进一步提高(当然,运行效率会怎么样得进行进一步的探讨)。前面的博客也提供了一种在不同的session中进行数据库更新的方法:DB4O在进行更新时只能在同一个session中的问题及改进方法。但在使用中会发现这种方法也有很多弊端,上博客的末尾和评论中我也做了一些讨论,当然这些讨论并不完善。

我也在尽自己的努力让大家能够更方便的使用Db4o数据库,为此,我写了一个更加实用的基础类,分享给大家:

首先我和大家分享一下我写这个类时的想法:在使用Db4o时一个非常大的不方便是如果在不同的using语句中(我习惯所有的数据库操作都用using),数据库没有办法更新,只用添加重复的数据库条目。正如DB4O在进行更新时只能在同一个session中的问题及改进方法中所说的那样,下面的代码会在数据库中添加一条数据,而不会将数据库中的内容进行更新:

所以我的想法是在每一个要加入数据库中的类中都增加一个可以唯一标志这个类的字段,在DB4O在进行更新时只能在同一个session中的问题及改进方法我尝试用了每一个数据的ID,但是数据记录在存储之前并不知道ID是多少,所以在要存储后查询ID,然后再存储,比较繁琐。次基类中使用的是GUID,既可以是唯一的,又不用多次存储。唯一的缺点是存储的数据量变大了(其实变大的量很小)。先把基类分享给大家:

代码的细节我就不多说了,给大家分享一个使用方法:

Person和其他的类也都没有什么特别的,但他们都继承自Db4objectsBase这个基类,代码如下:

最后对Db4objectsBase这个类作一个说明:

1、Db4objectsBase中的CopyFrom是使用反射的方法对类进行复制,所以效率并不是很多,在进行大量对象的复制的时候要注意。

2、现在Db4objectsBase支持所有的以Db4objectsBase为基类的类的复制,而且支持List属性和变量。下一步我会增加对数组和Dictionary属性和对象的支持。

3、此基类完全避开了对数据库引擎的操作,所以对数据库的效率不会产生影响。

最后把代码分享给大家:DB4OTest-Db4objectsBase

原创文章,文章首发于:Riley Ge (@rileyge) — Steemit

原创文章,转载请注明: 转载自TsonTec:测量解决方案提供者

本文链接地址: 分享一个Db4o的基础类,扩展你的Db4o

相关主题

  • DB4O在进行更新时只能在同一个session中的问题及改进方法2016-07-07 DB4O在进行更新时只能在同一个session中的问题及改进方法 (2)
    之前总是发现DB4O的好,但今天在使用DB4O的时候时候发现了一个非常大的不完善的地方,那就是如果要更新数据库,那么就必须在同一个session。在数据库中s […]
  • Db4o的第三扩展库的使用2016-07-10 Db4o的第三扩展库的使用 (0)
    最早的时候只是看过Db4o的一些基本内容,感觉他的理念和使用方法真是太符合我的要求了,但最近在使用Db4o的时候发现,Db4o还是有很多不足之处的。在之前的文 […]
  • 面向对象数据库及db4o的优势2016-01-29 面向对象数据库及db4o的优势 (0)
    这是这一系列文章的第一篇,所以不会说一些具体的见容,如果大家已经决定开始用db4o,而且大家对一些理论不太感兴趣的话,大家可以跳过这篇文章。当然这篇文章的所说 […]
  • db4o的查询2016-02-01 db4o的查询 (0)
    在不同的应用中,数据库的增删改查操作的频率是不一样的,但一般情况下使用的更多的是查询操作。查询的简易程度、速度是查询的两个重要参数。 db4o查询的优势 […]
  • 面向对象数据库比较之Perst和db4o2017-01-10 面向对象数据库比较之Perst和db4o (6)
    自己是一个穷程序员,所以用的都是开源的,然后自己用的语言是C#,现在自己找到的两种面向对象的数据库就只有Perst和db4o,自己对这两种数据库也只是简单的试 […]
  • db4o基础与入门2016-01-29 db4o基础与入门 (0)
    如果你使用的编程语言是java或者.net(笔者最常用的编程语言为C#,所以下文中以C#说事,请读者勿怪),那你有福气了,db4o可以说是一种最自然的数 […]

说点什么

您将是第一位评论人!

提醒
avatar
wpDiscuz
回顶部