0

我对 RavenDB 很陌生。

当我调用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();
}

是什么导致了问题?

4

2 回答 2

0

加载 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();

}

于 2013-01-10T16:25:52.540 回答
0

问题在于您的 id 字符串的手动格式。这是不必要的,并且由于您的复数形式而可能是错误的。

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

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

它应该可以工作。

于 2013-01-11T00:25:09.120 回答