0
プロジェクトで文書が削除されないようにしたいのですが、メタデータを使用して文書を「アーカイブ済み」としてマークすることにしました。私はそれを行うためのコードの下に使用:RavenDBはメタデータを照会します
public class DeleteDocumentListener : IDocumentDeleteListener
{
public void BeforeDelete(string key, object entityInstance, RavenJObject metadata)
{
metadata.Add("Archived", true);
throw new NotSupportedException();
}
}
その後、私はfalseに設定されたメタデータ値をアーカイブした文書のみを返すようにクエリを変更したい:
using (var session = _store.OpenSession())
{
var query = session.Advanced.DocumentQuery<Cutter>()
.WhereEquals("@metadata.Archived", false);
}
残念ながら、このクエリは、空の結果セットを返します。 Documentにこのメタデータプロパティがない場合、上記の条件はfalseとして扱われます。私が期待していたものではありませんでした。
メタデータプロパティを持たない、またはこのプロパティに値があるドキュメントを返すクエリを作成するにはどうすればよいですか?
非常にうまくいった、ありがとう。私がプロジェクトに持っている各エンティティに対してこのようなインデックスを実装する必要があるのは本当ですか? 1つの汎用インデックスを持つことは可能ですか? –