gpt4 book ai didi

c# - RavenDB 和复合模式

转载 作者:行者123 更新时间:2023-12-02 22:23:06 24 4
gpt4 key购买 nike

假设我有这样的结构

public class Form
{
public List<Field> Fields { get; set; }
}

Field 类可以是复合的,也可以包含从 Field 类派生的其他 Field,因此我具有某种层次结构。表单作为实体文档保存到 RavenDB 中,并且工作正常。我只是想知道如何从 RavenDB 获取 Form 实例,我希望 Raven 创建适当的类(类,派生自 Field 类)。假设我有两个派生类 FieldDerived1FieldDerived2 并将它们放入 FormFields 集合中取回它们后,我想要两个具有实际类型的元素 - FieldDerived1FieldDerived2 以及我添加到这些类中的所有附加属性?

最佳答案

它会工作得很好。 Raven 使用 Json.Net 进行序列化,它将向您的数据添加一个 $type 属性,以便可以将其正确反序列化为正确的类型。

假设您的字段看起来像这样:

public class Field
{
public string Name {get; set;}
}

public class FieldDerived1 : Field
{
public int Length {get; set;}
}

public class FieldDerived2 : Field
{
public string Color {get; set;}
}

Raven 将像这样存储 Form 类:

{
Fields: [
{
"$type": "YourNamespace.FieldDerived1, YourAssembly",
"Name": "foo",
"Length": 10
},
{
"$type": "YourNamespace.FieldDerived2, YourAssembly",
"Name": "bar",
"Color": "blue"
}
]
}

关于c# - RavenDB 和复合模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13399413/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com