我应该如何使用Esent与托管的Esent包装器?

时间:2012-09-18 06:17:28

标签: esent

我尝试了以下示例,使用Using语句打开实例,创建会话,附加到数据库,打开它,然后执行一些操作,如打开事务和保存记录。但是当我为每个操作使用这个模式时。像Save一样的每个操作需要大约0.5秒。所以我觉得我做错了。但我不确定我该怎么做。

我应该只有一个实例吗?如果命名不同,我可以获得更多吗?

如果我有多个帖子,我可以/我应该有更多吗?

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

那么有关如何使用它的指导吗?

1 个答案:

答案 0 :(得分:9)

我已经在这里或通过反复试验找到了这些答案,但对于那些在这里看到它们的人来说......

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

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

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

我所处理的被处置对象例外是因为我不应该在管理的Esent对象的创建和处置时重叠。