断开连接的上下文中的db4o:如何处理保存/更新

时间:2012-11-11 22:46:42

标签: c# db4o

我正在处理的应用程序是客户端/服务器,它们之间有REST通信。我想在服务器端使用db4o。客户端可以更新或创建条目。因此,对象从客户端返回到服务器以从“从ObjectContainer”开始更新。

让:

  public class IdHolder
  {
    public Guid Id {get; set;}
  }

  public class MyClass : IdHolder
  {
    public string SomeData {get; set;}
    public IdHolder Child {get; set;}
  }

如您所见,MyClass类引用了IdHolder。

根据db4o documentation我有2个解决方案:   内部的Uuid   2.手动指导处理

在第1种情况下,客户端必须引用db4o程序集才能知道特定类型的db4o.Uuid,这是不好的。

在案例2中(这在上面的类定义中是隐含的),Guid处理很方便,但db4o不知道内部IdHolder引用。例如:

  • o1是保存在DB
  • 中的IdHolder
  • o2是一个带有o2.Child == o1
  • 的MyClass

当o2被发送到Server进行保存时,o1的重复条目保存在DB中,因为db4o不知道o1已经存在并且可以通过其o1.Id找到。

问题是:使用db4o处理断开连接的场景的最佳方法是什么?

修改

This part if the doc处理此类问题。 “合并”。对我来说似乎不太满意。我对你的概念/技术想法持开放态度。

1 个答案:

答案 0 :(得分:1)

在db4o端基本上没有支持。像文档所说的'merging'基本上是你得到的最佳选择。

db4o对于网络应用来说并不是最佳选择,因为这样。 (它也不会扩展,因为它本身就是单线程的。)