我正在开发一个协作文档编辑工具,它将使用RavenDB进行持久化。在我的域中,我有一个看起来像这样的文档类。
public class Document
{
public string Id { get; private set; }
public string Name { get; set; }
public IRevision CurrentRevision {get; private set; }
public string Contents {get { return CurrentRevision.GenerateEditedContent(); }}
}
正如您所看到的那样,该文档的CurrentRevision属性指向一个看起来像这样的IRevision对象。
public interface IRevision
{
IRevision PreviousRevisionAppliedTo { get; }
IRevision NextRevisionApplied { get; set; }
Guid Id { get; }
string GenerateEditedContent();
}
所以基本的想法是通过检查当前版本来动态生成文档的内容,然后检查它的父版本,依此类推等等。
开箱即用,RavenDB似乎没有按照我需要的方式处理这个对象引用链。我一直试图通过调用Session.Store(文档)来保持它,并希望相关修订的列表也会被存储。我已经查看了RavenDB框架的一些部分,比如自定义序列化程序,但是我无法找到一条清晰的路径,可以让我按照自己的意愿反序列化和重新序列化数据。什么是处理这种情况的好方法。