SaveChanges没有在raven数据库中得到反映

本文关键字:数据库 raven SaveChanges | 更新日期: 2023-09-27 17:52:13

我是RavenDB的新手。

当我在会话中调用SaveChanges()时,它执行成功,但数据没有存储在DB中。

我的代码如下:
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();
}

是什么导致了这个问题?

SaveChanges没有在raven数据库中得到反映

加载Exampleusers时传入temp而不是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();

}

问题是手动格式化你的id字符串。这是不必要的,而且很可能是错误的,因为你的复数形式。

  1. 用单数命名实体。ExampleUser
  2. 确保您得到了查询的结果。如果索引过期或没有找到用户名,则time为空。您应该检查以避免NullReferenceException
  3. 直接加载实体。如果使用字符串id,则拥有完整的文档键。如果你使用的是整数或guid, Raven有一个重载为你转换它。

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