加载没有CLR类型的RavenDB文档

加载没有CLR类型的RavenDB文档,ravendb,Ravendb,我正在尝试从没有存储的CLR类型的域中按id加载文档 原始结构如下所示: public class Document { public int DocumentId {get;set;} public string SomeValue {get;set;} public List<Data> Data {get;set;} } public abstract class Data { } public class Data1 : Data { pu

我正在尝试从没有存储的CLR类型的域中按id加载文档

原始结构如下所示:

public class Document
{
    public int DocumentId {get;set;}
    public string SomeValue {get;set;}
    public List<Data> Data {get;set;}
}

public abstract class Data { }
public class Data1 : Data 
{
    public string SomeOtherValue {get;set;}
}
公共类文档
{
public int DocumentId{get;set;}
公共字符串SomeValue{get;set;}
公共列表数据{get;set;}
}
公共抽象类数据{}
公共类数据1:数据
{
公共字符串SomeOtherValue{get;set;}
}
现在,在我的第二个项目中,我没有访问此结构的权限,我尝试使用raven的duck类型功能加载它,并使用一个看起来相同的类

public class Document
{
    public int DocumentId {get;set;}
    public string SomeValue {get;set;}
    //public List<Data> Data {get;set;}
}

public abstract class Data { }
public class Data1 : Data 
{
    public string SomeOtherValue {get;set;}
}
公共类文档
{
public int DocumentId{get;set;}
公共字符串SomeValue{get;set;}
//公共列表数据{get;set;}
}
公共抽象类数据{}
公共类数据1:数据
{
公共字符串SomeOtherValue{get;set;}
}

如果我没有在这个类中包含数据参数(如上所述),它将正常加载,但如果我包含它,它将失败,并出现一个错误,表示它不知道存储的原始类型(“无法加载程序集'OriginalAssemblyName'”。有没有办法让raven duck类型也成为对象列表,而不是尝试将其转换为我无法访问的类型?

我一直在研究一些非常类似的东西,并偶然发现了这一点。从会话中加载对象作为JObject对我来说似乎没问题。session.Load(id)。我正在尝试做一些更复杂的事情,但仍然有一些问题。正在进行的线程

我最后做的是将数据列表作为列表加载,然后编写一个扩展方法,检索DynamicJsonObject的属性并尝试填充指定的块,如果它具有与我请求的块相同的属性,它将返回它。这不是最优雅的解决方案,但它满足了我对数据的需求。