SaveChanges没有反映在乌鸦数据库中

时间:2013-01-10 15:55:13

标签: c# ravendb

我是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();
}

导致问题的原因是什么?

2 个答案:

答案 0 :(得分: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();

}

答案 1 :(得分:0)

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

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

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

  4. 它应该可以正常工作。