2013-01-10 3 views
0

Я очень новичок в RavenDB.SaveChanges не отражается в базе данных ворона

Когда я вызываю SaveChanges() в свою сессию, он выполняется успешно, но данные не сохраняются в БД.

Мой код выглядит следующим образом:

using (var session = RavenDocumentStore.OpenSession()) 
{ 
    var time = session.Query<Exampleusers>() 
      .Where(x => x.Username == userName).FirstOrDefault(); 
    var temp = time.Id; 
    var data = session.Load<Exampleusers>(
      string.Format("Exampleusers/{0}", temp)); 

    data.Expiration = DateTime.Now; 

    session.SaveChanges(); 
} 

Что вызывает проблему?

+0

Откуда вы знаете, что данные не сохраняются? Вы проверили с Raven Studio? Можете ли вы опубликовать, как вы пытаетесь прочитать сохраненные данные? – nemesv

+0

Да, я зарегистрировался в студии ворона. С помощью студии ворона только я смог узнать, что данные не получаются. –

+0

SaveChnages(), saveCnages() или SaveChanges() или что именно? Я собирался изменить/отредактировать сообщение, но хотел убедиться. –

ответ

0

При загрузке Exampleusers проходить в температуре и не string.Format (...)

using (var session = RavenDocumentStore.OpenSession()) 
{ 
    var time = session.Query<Exampleusers>() 
     .Where(x => x.Username == userName).FirstOrDefault(); 
    var temp = time.Id; 
    var data = session.Load<Exampleusers>(temp); 

    data.Expiration = DateTime.Now; 
    session.SaveChanges(); 

}

+0

Спасибо всем за помощь :). –

+0

Нет - вам не нужно вызывать 'session.Store (data)'. Он уже отслеживается. Это было бы излишним. –

+0

[Ссылка здесь] (http://ravendb.net/docs/2.0/client-api/basic-operations/loading-editing-existing-document) примерно на полпути вниз: «Вам не нужно вызывать метод Update , или отслеживать любые изменения самостоятельно. RavenDB сделает все это для вас ». –

0

Проблема заключается с ручным форматированием вашей строки идентификатора. Это необязательно и, скорее всего, неверно из-за вашей формы плюрализации.

  1. Назовите свои сущности в единственном числе. ExampleUser
  2. Убедитесь, что вы получили результат по вашему запросу. Если индекс устарел или имя пользователя не найдено, time будет равно NULL. Вы должны проверить, чтобы избежать NullReferenceException.
  3. Просто загрузите объект напрямую. Если вы используете идентификаторы строк, у вас есть полный ключ документа. Если вы используете идентификаторы integer или guid, у Raven есть перегрузка, чтобы преобразовать ее для вас.

    var data = session.Load (time.Id);

Он должен просто работать.

Смежные вопросы