1

Raven DBとそのC#APIについてサポートが必要です。Linqクエリ(LinqからRavenへの実装)を使用して「順序付け」を実行したいと思います。そのためには、このアクションを実現するためのインデックスを作成する必要があります。私のスキーマは現在正規化されていますが、カスタムプロパティを追加するために非正規化したいと思います。

ので、私は持っています :

エンティティA:

  • いくつかのプロパティ
  • BエンティティのID

実際、私は単にAsbyBプロパティを注文したいと思っています。そこで、Aを非正規化してBプロパティを含めたいと思います。

したがって、RavenDBを使用してスキームを進化させることは可能ですが、AIでBプロパティを設定するには、Aを変換するときにBをロードする必要があります。ドキュメントによると不可能のようです。

各Aを繰り返してBをロードする不気味なプログラムを作成したくありませんが、別の解決策は見当たりません。

何か案が ?

お時間をいただきありがとうございます:)。ジュリアン

4

1 に答える 1

1

気味の悪いプログラムを書くのではなく、役に立つ移行スクリプトを多数保持する堅牢な移行プロジェクトを作成する必要があります。次のような単純なスクリプトで作業が行われます。

public void LoadAndSaveWithDenormalizedProperty()
{
    using (var session = store.OpenSession())
    {
        int skip = 0;
        const int take = 24;
        while (true)
        {
            var items = session.Query<ItemA>()
                .Customize(customization => customization.Include(x => x.ItemBId))
                .Skip(skip)
                .Take(take)
                .ToList();
            skip += items.Count;

            foreach (item in items)
            {
                item.DenormalizedProperty = 
                       session.Load<ItemB>(item.ItemBId).PropertyToDenormalize;
            }

            session.SaveChanges();

            if (items.Count == 0)
                break;
        }
    }
}
于 2012-07-26T06:52:20.590 に答える