Есть ли способ установить оптимистичный параллелизм в true в Raven.Server.exe.config? Или может ли это как-то применяться на уровне базы данных? На сайте RavenDB, я вижу несколько упоминаний о настройке UseOptimisticConcurrency = верно, но это выглядит, как будто это на уровне сеанса в коде:RavenDB UseOptimisticConcurrency в конфигурации?
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();
}
}
Я хотел бы знать, если эта настройка существует где-то на сервере широкий , поэтому его не нужно указывать для каждого сеанса в коде.
Редактировать: Код, указанный выше, вызывает ошибку. Пытаясь выяснить, почему ...
Edit 2: Хорошо, я делаю успехи. Если я получаю объект и вызываю GetEtagFor() все в тот же сеанс, тогда я получаю действительный eTag. Поэтому, я думаю, теперь мой главный вопрос: правильно ли использовать сеанс в пользовательском интерфейсе клиента, чтобы открыть сеанс один раз, когда приложение запустится, а затем закрыть его в конце? И ... Каков правильный способ хранения eTag? То, как оно закодировано выше, eTag извлекается непосредственно перед хранением, что, я думаю, является неправильным способом сделать это. Я предполагаю, что eTag следует извлекать, когда объект сначала извлекается. Но когда мы изначально получаем список объектов, нужно ли нам перебирать каждый из них и вызывать GetEtagFor() на них? Не кажется правильным ...
Необходимо ли сохранить объект в том же сеансе, в который он был загружен/запрошен? И я не вижу, где эта ссылка отображает информацию об управлении сеансом. –
Кстати, я нашел это. Возможно, это похоже на ссылку, которую вы опубликовали: http://msdn.microsoft.com/en-us/magazine/ee819139.aspx –