DB4O持久性和非关闭提交

时间:2014-03-21 13:22:41

标签: c# db4o

我使用带有透明持久性/激活的DB4O,使用msbuild增强功能作为ASP.NET MVC Intranet协作编辑应用程序的首选数据库。我有几个简单的问题:

如果我在每组更改后调用commit(),而不是在客户端或服务器中关闭我的IObjectContainer。当我的WebApp崩溃或无法正常关机时,我的数据是否仍然存在且完好无损?

由于没有ActivatableHashSet或ActivatableSortedSet,如果我使用.Net的HashSet或SortedSet或其他非TA / TP Collection类型,如何在这些集合更改时正确处理持久性? (例如,当这些集合是TA类的成员时),例如

[Persisted]
class A<T> where T : new()
{
  HashSet<T> stuff = new ...
  void AddMore() { stuff.Add(new T()) }
}

1 个答案:

答案 0 :(得分:1)

  

如果我在每组更改后调用commit(),而不是在客户端或服务器中关闭我的IObjectContainer。当我的WebApp崩溃或无法正常关机时,我的数据是否仍然存在且完好无损?

是的,有关db4o中的事务的详细信息,请参阅this documentation

但要注意:调用commit会经常会杀死性能。您需要对应用进行分析以找到余额。

  

由于没有ActivatableHashSet或ActivatableSortedSet,如果我使用.Net的HashSet或SortedSet或其他非TA / TP Collection类型,如何在这些集合更改时正确处理持久性? (例如,当这些集合是TA类的成员时),例如

我强烈建议您下载并查看official TA/TP enabled collections implementation