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

Noe*_*oel 4 esent

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

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

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

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

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

Noe*_*oel 9

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

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

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

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

我所处理的被处置对象例外是因为当我不应该处理Managed Esent对象的创建和处置时.