IDocumentStoreListenerを使用して、単純なモデルにオートインクリメントを追加しようとしています。私は、この機能の実装に関するドキュメントがかなり疎であることを発見しました(どのポインタも大いに評価されるでしょう)。私はthis blog postに従うことを試みてきましたが、期限が切れているようです。私はRavenDBとIDocumentStoreListener
store = new EmbeddableDocumentStore
{
RunInMemory = true
}
.RegisterListener(new AuditableEntityListener(() => "Test User"))
.Initialize();
を実装しようとすると、私は「それはデリゲート型ではありませんので、はRaven.Client.IDocumentStoreを入力するラムダ式を変換できない」旨のビルドエラーを取得します。
が、私はこのコードを使用して構築するためにそれを得るために管理store = new EmbeddableDocumentStore
{
RunInMemory = true
}
.RegisterListener(new AuditableEntityListener(store))
.Initialize();
リスナーのためのコードは、私がアプリケーションを実行すると、それはPublicIdStoreListenerを打つ、しかし
public class PublicIdStoreListener : IDocumentStoreListener
{
HiLoKeyGenerator generator;
IDocumentStore store;
public PublicIdStoreListener(IDocumentStore store)
{
this.store = store;
generator = new HiLoKeyGenerator(store, "verifications", 1024);
}
public void AfterStore(string key, object entityInstance, RavenJObject metadata)
{
throw new NotImplementedException();
}
public bool BeforeStore(string key, object entityInstance, RavenJObject metadata)
{
var verification = entityInstance as VerifyAccountModel;
if (verification.PublicId == "0")
{
verification.PublicId = generator.GenerateDocumentKey(store.Conventions, entityInstance);
}
return false;
}
}
を以下のとおりであるとき、任意のVerifyAccountModelだけでなく、アプリケーションが格納されます。これにより、アプリケーションは例外をスローします。
実際にどのように実装されているのか混乱しているので、誰かが正しい方向に向けることができるのだろうかと思っていました。前もって感謝します。私は、次の
public bool BeforeStore(string key, object entityInstance, RavenJObject metadata)
{
if (entityInstance.GetType() == new VerifyAccountModel().GetType())
{
var verification = entityInstance as VerifyAccountModel;
if (verification.PublicId == "0")
{
verification.PublicId = generator.GenerateDocumentKey(store.Conventions, entityInstance);
}
}
return true;
}
UPDATE にdocumentlistenerを更新
EDIT は、私はそれがインスタンス化されているのと同じラインにRegisterListenerを経由して店舗を添付傾けることを考え出しました。後でそれを行う必要があります。そうでなければ、店舗は引き渡された時点でまだヌルです。ご協力いただきありがとうございます。
デビッド - **ラインそうRegisterListener(新しいAuditableEntityListener(()=> "テストユーザー"))**間違っていると私は使用して正しくのDocumentStoreするためにこれを追加してい** RegisterListener(新しいAuditableEntityListener(。。ストア))**? – jamesamuir
はい、 'PublicIdStoreListener'コンストラクタは' IDocumentStore'を受け入れるように書かれています。 –
あなたは 'PublicIdStoreListener'権利を使用していますか? 'AuditableEntityListener'はブログ投稿のコピー/ペーストから来ていますか? –