在RavenDb中拦截对象创建

时间:2012-11-23 16:25:10

标签: aop json.net ravendb

我正在尝试在从RavenDB加载的对象上运行一些代码,我需要在对象加载了它的属性值之后才这样做。

我尝试使用CustomCreationConverter拦截反序列化过程并重写ReadJson,但是我可以访问的对象具有所有属性设置,除了我需要的属性:Id。是否有其他地方我可以插入管道进行此操作?

1 个答案:

答案 0 :(得分:2)

您没有看到ID的原因是因为它不是文档的一部分,因此它在元数据中为@id

如果要拦截客户端,可以注册自定义转换侦听器。创建一个实现IDocumentConversionListener的类,并将其注册到documentStore.RegisterListener()。在DocumentToEntity方法中,您可以运行自定义逻辑。一般来说,听众缺乏文档,但还有另一个主题也使用它们: http://ravendb.net/kb/16/using-optimistic-concurrency-in-real-world-scenarios

另一个选项是添加一个在服务器端拦截的包。为此,您将使用Read Trigger