带有Guid id的RavenDB版本控制包和对象在GetRevisionsFor中给出了一个例外

时间:2014-06-06 14:36:11

标签: c# versioning ravendb

我一直在使用RavenDb 2.5和Versioning Bundle。 在我必须将域名模型 Id int 更改为 Guid 之前,它一直很完美。

这是我的班级(虽然有点缩短)

[Serializable]
public class BookTree : IBookTreeComponent 
{
    public Guid Id { get; set; }
    public string Name { get; set; }
    public string OwnerEmail { get; set; }

}

获取最新版本以及修订列表非常有效。 但随后程序偶然发现

session.Advanced.GetRevisionsFor<BookTree>("BookTrees/" + tree1.Id, 0, 25).ToList();

我收到以下异常

 An exception of type 'System.InvalidOperationException' occurred in  
 Raven.Client.Lightweight.dll but was not handled in user code

 Additional information: Could not convert document 
 BookTrees/5a84823f-dbe3-4c35-9010-672223baa330/revisions/1 to entity of type
 some.namespace.BookTree

内部例外是:

 {"Guid should contain 32 digits with 4 dashes
 (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)."}

查看 GetRevisionsFor 扩展方法后:

    public static T[] GetRevisionsFor1<T>(this ISyncAdvancedSessionOperation session, string id, int start, int pageSize)
    {
        var inMemoryDocumentSessionOperations = ((InMemoryDocumentSessionOperations)session);
        var jsonDocuments = ((DocumentSession)session).DatabaseCommands.StartsWith(id + "/revisions/", null, start, pageSize);
        return jsonDocuments
            .Select(inMemoryDocumentSessionOperations.TrackEntity<T>)
            .ToArray();
    }

我发现我实际上是在获取jsonDocument,但是在此方法的某处出现了异常 inMemoryDocumentSessionOperations.TrackEntity

尽管如此,正如我之前提到的,它与整数Ids完美配合。

任何想法出错或如何使其与Guid ID一起使用?

0 个答案:

没有答案