RavenDB:ドキュメント変換中のデータベースインスタンスへのアクセス

StackOverflow https://stackoverflow.com//questions/11653008

質問

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

だから、私は持っています:

エンティティA:

  • 財産
  • BエンティティのID

    実際には、Bプロパティだけを注文したいだけです。だから私は私のaを非難するようにBプロパティを含めることを義務したい。

    だからラベンドBではスキームの進化が可能ですが、AのBプロパティをAに設定するためには、Aを変換するときにBをロードしなければならない。ドキュメントによると不可能になるようです。

    それぞれのAをロードするために各Aを繰り返す不気味なプログラムを構築したくありませんが、別の解決策が見られません。

    任意のアイデア?

    あなたの時間をありがとう:)。 Julien

役に立ちましたか?

解決

不気味なプログラムを書いてはいけませんが、束を持つ堅牢な移行スクリプトを保持する堅牢な移行プロジェクト。Bellowのような単純なスクリプトはあなたのために仕事をします:

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;
        }
    }
}
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top