我正在评估 db4o 的 ASP .NET MVC 项目的持久性。
我想知道关于对象生命周期我应该如何在 Web 上下文中使用 IObjectContainer 。如我所见,我可以执行以下操作之一:
- 在应用程序启动时创建 IObjectContainer 并在整个应用程序生命周期内保持相同的实例。
- 每个请求创建一个 IObjectContainer。
- 启动一个服务器,并为每个数据库交互获取一个客户端 IObjectContainer。
这些选项在性能和并发方面有什么影响?
由于打开 IObjectContainer 时数据库被锁定,我很确定选项 2)会给我带来一些并发问题 - 选项 1 也会出现这种情况吗?
据我了解,如果我从 IObjectContainer 检索对象,它必须由同一个 IObjectContainer 实例保存 - 以便 db4o 将其识别为同一个对象。因此,如果我选择选项 3),我将不得不检索原始对象,进行必要的更改(从修改的对象复制数据),然后使用相同的 IObjectContainer 存储它。这是真的 ?