我一直在使用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一起使用?