有没有办法在 Raven.Server.exe.config 中将乐观并发设置为 true?或者,它可以以某种方式应用于数据库级别吗?在 RavenDB 的网站上,我看到一些提到设置 UseOptimisticConcurrency = true,但它看起来像是在代码中的会话级别:
public void Save<T>(T objectToSave)
{
using (IDocumentSession session = Database.OpenSession())
{
session.Advanced.UseOptimisticConcurrency = true; // This is the setting
Guid eTag = (Guid)session.Advanced.GetEtagFor(objectToSave);
session.Store(objectToSave, eTag);
session.SaveChanges();
}
}
我想知道该设置是否存在于服务器范围内的某个地方,因此不需要为代码中的每个会话指定它。
编辑:上面的代码产生以下错误。试图找出原因...
编辑2:好的,我正在取得进展。如果我检索对象,并在同一个会话中调用 GetEtagFor() ,那么我会得到一个有效的 eTag。所以我想我现在的主要问题是:在客户端 UI 中使用会话的正确方法是在应用程序启动时打开会话一次,然后在最后关闭它?并且... 存储 eTag 的正确方法是什么?按照上面的编码方式,在存储之前就检索了 eTag,我想这是错误的做法。我猜应该在第一次检索对象时检索 eTag。但是当我们最初得到一个对象列表时,我们是否必须遍历每个对象并在它们上调用 GetEtagFor() ?好像不太对...