RavenDB:ドキュメント変換中のデータベースインスタンスへのアクセス
-
11-12-2019 - |
質問
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;
}
}
}
. 所属していません StackOverflow