我正在开发一个协作文档编辑工具,它将使用 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(document) 来保持它,并希望相关修订列表也能被存储。我已经研究了 RavenDB 框架的一些部分,比如自定义序列化程序,但我无法找到一条清晰的路径来让我可以根据需要对数据进行反序列化和重新序列化。有什么好办法来处理这种情况。