4

我尝试按照示例进行操作,使用 Using 语句打开实例、创建会话、附加到数据库、打开它,然后执行一些操作,例如打开事务和保存记录。但是当我对每个操作都使用这种模式时。每个操作(如保存)大约需要 0.5 秒。所以我认为我做错了。但我不确定我应该怎么做。

我应该只有一个实例吗?如果它们的名称不同,我可以拥有更多吗?

如果我有多个线程,我可以/我应该有更多吗?

我看到我可以同时打开多个会话,我认为可以,但是每个会话都需要附加吗?应该为每个会话打开数据库吗?当我测试这些不同的场景时,我得到的结果不一致,有时我的测试通过有时我得到异常,例如尝试使用已处置的对象或 EsentTempPathInUseException。

那么有什么关于我应该如何使用它的指导吗?

4

1 回答 1

9

我在其他地方或通过反复试验找到了这些答案,但对于在这里看到它们的任何人......

您应该只有一个实例,创建实例非常昂贵,它实际上是在创建数据库,并且因为它会从意外关闭中自我修复,如果需要,它可能会运行这些例程。如果您将其命名为不同的实例,则不能打开多个实例,它将创建与第一个不同的第二个实例。如果你重叠它们,那么你会得到一个错误。

多线程没有问题。打开一个数据库一次。附加一次会话。会话不应跨线程。您可以有多个线程,每个线程都有自己的会话,每个会话都访问数据库。确保您处理托管的 escent 对象。所以请按照示例使用“使用”语句或确保对象处理它们。

当当前实例仍在使用时,尝试打开第二个实例时抛出 EsentTempPathInUseException。

我遇到的已处置对象异常是因​​为我不应该重叠创建和处置 Managed Esent 对象。

于 2012-09-25T21:49:55.813 回答