【问题标题】:RavenDb objects instantiationRavenDb 对象实例化
【发布时间】:2012-01-01 16:21:05
【问题描述】:

我注意到 RavenDb 不需要实体具有默认构造函数。那么它是如何在查询期间创建对象的呢?

【问题讨论】:

    标签: .net nosql ravendb


    【解决方案1】:

    伊莎, 它的工作方式,当你有一个 ctor 和一个 json 时,我们尝试将 ctor 参数与 json 属性匹配,看看我们是否可以让它工作。

    此行为内置于 Json.NET

    【讨论】:

      【解决方案2】:

      我相信 RavenDB 无法自动处理这个问题。如果我没记错的话,RavenDB 使用 Newtonsoft JSON 库将其序列化为 JSON。因此,您必须为其提供自定义解析器。

      有关更多信息,请参阅 RavenDB 常见问题解答上的 'Immutable entities' 和 Raven DB Google 组上的 this discussion

      【讨论】:

      • 引用您提到的讨论:“JsonSerializer 似乎无需任何自定义即可按原样工作”。所以它确实有效(我在我的应用程序中看到了它)。我只是好奇它是如何实现的
      【解决方案3】:

      当您不指定一个时,Visual Studio 会在 IL 中自动生成一个。

      如果您指定了私有无参数构造函数,则不会生成默认的公共无参数构造函数。

      作为一个实验,尝试添加一个默认的无参数私有构造函数来测试这个理论。我认为 RavenDb 可能对此有疑问。

      【讨论】:

      • 我有一个带有一个非默认公共构造函数的实体,我认为 RavenDb 没有任何问题。我只是好奇为什么会这样
      猜你喜欢
      • 1970-01-01
      • 2013-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多