我正在尝试在从 RavenDB 加载的对象上运行一些代码,并且我需要在对象加载其属性值后立即执行此操作。
我尝试使用 CustomCreationConverter 拦截反序列化过程并覆盖 ReadJson,但此时我可以访问的对象已设置所有属性,除了我需要的属性:Id。我可以在其他地方插入管道来执行此操作吗?
最佳答案
您看不到 ID 的原因是它不是文档的一部分,而是以 @id
形式存在于元数据中。
如果您想拦截客户端,您可以注册一个自定义转换监听器。创建一个实现 IDocumentConversionListener
的类,并将其注册到 documentStore.RegisterListener()
。在 DocumentToEntity
方法中,您可以运行自定义逻辑。一般来说,缺少有关监听器的文档,但另一个主题也使用它们:
http://ravendb.net/kb/16/using-optimistic-concurrency-in-real-world-scenarios
另一个选择是添加一个在服务器端拦截的包。为此,您可以使用 Read Trigger .
关于aop - 拦截 RavenDb 中的对象创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13532730/