我使用带有透明持久性/激活的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()) }
}
答案 0 :(得分:1)
如果我在每组更改后调用commit(),而不是在客户端或服务器中关闭我的IObjectContainer。当我的WebApp崩溃或无法正常关机时,我的数据是否仍然存在且完好无损?
是的,有关db4o中的事务的详细信息,请参阅this documentation。
但要注意:调用commit会经常会杀死性能。您需要对应用进行分析以找到余额。
由于没有ActivatableHashSet或ActivatableSortedSet,如果我使用.Net的HashSet或SortedSet或其他非TA / TP Collection类型,如何在这些集合更改时正确处理持久性? (例如,当这些集合是TA类的成员时),例如
我强烈建议您下载并查看official TA/TP enabled collections implementation