【发布时间】:2012-01-01 16:21:05
【问题描述】:
我注意到 RavenDb 不需要实体具有默认构造函数。那么它是如何在查询期间创建对象的呢?
【问题讨论】:
我注意到 RavenDb 不需要实体具有默认构造函数。那么它是如何在查询期间创建对象的呢?
【问题讨论】:
伊莎, 它的工作方式,当你有一个 ctor 和一个 json 时,我们尝试将 ctor 参数与 json 属性匹配,看看我们是否可以让它工作。
此行为内置于 Json.NET
【讨论】:
我相信 RavenDB 无法自动处理这个问题。如果我没记错的话,RavenDB 使用 Newtonsoft JSON 库将其序列化为 JSON。因此,您必须为其提供自定义解析器。
有关更多信息,请参阅 RavenDB 常见问题解答上的 'Immutable entities' 和 Raven DB Google 组上的 this discussion。
【讨论】:
当您不指定一个时,Visual Studio 会在 IL 中自动生成一个。
如果您指定了私有无参数构造函数,则不会生成默认的公共无参数构造函数。
作为一个实验,尝试添加一个默认的无参数私有构造函数来测试这个理论。我认为 RavenDb 可能对此有疑问。
【讨论】: