DB4O在进行更新时只能在同一个session中的问题及改进方法

嘎子 面向对象数据库 2016-07-07 682 次浏览 2条评论

之前总是发现DB4O的好,但今天在使用DB4O的时候时候发现了一个非常大的不完善的地方,那就是如果要更新数据库,那么就必须在同一个session。在数据库中session一般是指的同一次连接,但为了验证自己的想法,自己用visual studio编写了测试程序,看效果怎么样。

捕获

首先作一个简短的说明,自己用的是Visual Studio 2012,DB4O的版本是8.0(.net 4.0)。写了一个简单的Winform程序,程序主要有4个按键,如下图所示:

这4个按键实现的功能分别是:

1、增加一个Person。

Person的定义如下:

2、为在一个using语句中更新Person,代码如下:

3、在两个using语句中更新Person,代码如下:

4、是一个统计人数的东东。

对问题的分析如下:首先增加一个人,然后更新,会发现用第2个按键更新仍旧只有一个人,而如果用第3个按键更新,恭喜你,会有两个人出现。

说明自己的猜想完全正确,只能在同一个using语句中对同一个对象进行更新,在不同的using语句中进行更新时会增加一个类似的对象。但是我个人比较习惯而且也认为是比较正确的是第三种那样的使用方法:

在打开数据库后立刻进行数据的读取更新等操作,操作完成后立刻关闭数据库。然后用业务逻辑对某一个对象进行操作,最后再重新打开数据库进行更新操作。

把自己的测试项目分享给大家:DB4OTest

测试结果是一个非常让人不愿意接受的,有什么方法可以改进呢?

我们要达到以下两点:

1、同一个对象在不同的session中可以更新。

2、在同一个session可以保存一个类的副本。

对此,我设计一个Db4oBase,只要在写程序时继承这个类,就可以实现以上两种功能。但在调用时要用调用类的UpdateTo方法和StoreTo方法。

更新后的源如下:?DB4OTest2

这个源码大家仔细的读一下就会发现,会有很多隐患,例如:

1、当用UpdateTo的时候如果误更改了DBID,可能会将不相关的内容删除。所以在使用前一定要保证DBID的正确性。

2、更新操作的效率会比原来的数据库低,因为操作量增加了好几倍。

 

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

本文链接地址: DB4O在进行更新时只能在同一个session中的问题及改进方法

相关主题

  • 分享一个Db4o的基础类,扩展你的Db4o2016-07-16 分享一个Db4o的基础类,扩展你的Db4o (0)
    我在前面也给大家分享了两个Db4o的第三方库(Db4o的第三扩展库的使用),使用这些第三方库为使你写代码的效率进一步提高(当然,运行效率会怎么样得进行进一步的 […]
  • Db4o的第三扩展库的使用2016-07-10 Db4o的第三扩展库的使用 (0)
    最早的时候只是看过Db4o的一些基本内容,感觉他的理念和使用方法真是太符合我的要求了,但最近在使用Db4o的时候发现,Db4o还是有很多不足之处的。在之前的文 […]
  • Kotlin中的data类–为数据而生,为数据而美2017-05-27 Kotlin中的data类–为数据而生,为数据而美 (0)
    我们在写程序时,不可避免的会进行数据的操纵。在进行数据操纵时,我们会专门的编写一些类。如果这些类写的多了,你会发现这些类都有一些比较类似的特点,因为这些特点的 […]
  • 也赶个时髦,说说Kotlin那些事2017-05-25 也赶个时髦,说说Kotlin那些事 (1)
    自己之前很长时间都在用C#来进行桌面的编程,所以非常喜欢C#那种简洁、简单的语言风格。虽然有很多人在说C#的效率有问题(当然,Microsoft也一直在说C# […]
  • 轻量级面向对象数据库NDatabase五分钟精通教程2017-01-11 轻量级面向对象数据库NDatabase五分钟精通教程 (0)
    目前为止,NDatabase是最让我心动的面向对象数据库(挤掉了db4o在我心中的位置)。其具体特征什么的我就不详细说了,大家可以参照NDatabase - […]
  • db4o的查询2016-02-01 db4o的查询 (0)
    在不同的应用中,数据库的增删改查操作的频率是不一样的,但一般情况下使用的更多的是查询操作。查询的简易程度、速度是查询的两个重要参数。 db4o查询的优势 […]

说点什么

2 评论 在 "DB4O在进行更新时只能在同一个session中的问题及改进方法"

提醒
avatar
排序:   最新 | 最旧 | 得票最多
奇虎分享网
游客

过来看看你的博客,希望每天都更新一些文章。

wpDiscuz
回顶部