【问题标题】:Loading a RavenDB document without CLR type加载没有 CLR 类型的 RavenDB 文档
【发布时间】:2014-03-07 02:24:57
【问题描述】:

我正在尝试通过其 id 从没有存储的 CLR 类型的域加载文档。

原来的结构是这样的:

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;}
}

现在在我无法访问此结构的第二个项目中,我尝试使用 raven 的鸭子类型功能和一个看起来相同的类来加载它。

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;}
}

如果我在此类中不包含 Data 参数(如上),它加载正常,但如果我包含它,它会失败并显示错误,说它不知道存储的原始类型(“无法加载程序集'OriginalAssemblyName'”)。有没有办法让 raven duck-type 也成为对象列表,而不是尝试将其强制转换为我无权访问的类型?

【问题讨论】:

    标签: ravendb


    【解决方案1】:

    我一直在做一些非常相似的事情,但偶然发现了这一点。将会话中的对象作为 JObject 加载似乎对我来说没问题。会话.负载(ID)。我正在尝试做一些更复杂的事情,但仍然有问题。 https://groups.google.com/forum/#!topic/ravendb/y3-SVB18xVg 的持续线程

    【讨论】:

    • 我最终做的是将数据列表加载为 List,然后编写一个扩展方法来检索 DynamicJsonObject 的属性并尝试填充指定的块,如果它有与我要求的块相同的属性,它返回了它。不是最优雅的解决方案,但它适用于我需要的数据。
    猜你喜欢
    • 1970-01-01
    • 2012-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多