0

私は 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();
}

問題の原因は何ですか?

4

2 に答える 2

0

問題は、ID 文字列の手動フォーマットにあります。これは不必要であり、複数形のために間違っている可能性があります。

  1. エンティティに単数形で名前を付けます。 ExampleUser
  2. クエリから結果が得られたことを確認してください。インデックスが古いか、ユーザー名が見つからない場合はtimenull になります。を回避するためにチェックする必要がありNullReferenceExceptionます。
  3. エンティティを直接ロードするだけです。文字列 ID を使用している場合は、完全なドキュメント キーがあります。整数または GUID ID を使用している場合、Raven にはそれを変換するためのオーバーロードがあります。

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

それはうまくいくはずです。

于 2013-01-11T00:25:09.120 に答える
0

Exampleusers をロードするときは、string.format(...) ではなく temp を渡します。

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 に答える