【问题标题】:Object of type 'System.String' cannot be converted to type 'MongoDB.Bson.ObjectId'“System.String”类型的对象无法转换为“MongoDB.Bson.ObjectId”类型
【发布时间】:2014-04-19 11:38:29
【问题描述】:

我有一个 C# 类,它有一个 ObjectId 类型的 id 字段:

[BsonId]
[SolrUniqueKey("id")]
public ObjectId Id { get; set; }

在 Solr 中,模式已将 id 定义为:

 <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 

当尝试从 Solr 拉取对象时失败,因为它无法将字符串 id 转换为 MongoDB ObjectId。有没有人可以在不更改 SolrNet 源的情况下轻松解决此问题?

【问题讨论】:

    标签: mongodb solr solrnet


    【解决方案1】:

    对于任何感兴趣的人,下面是我在不修改 SolrNet 源代码的情况下最终做到的方式。

    我在名为 IdAsString 的类中添加了一个附加属性并将其设置为“BsonIgnore”,这样它就不会存储在 MongoDB 中,但是我使用该字段将其映射到 Solr 的 id 字段:

    [BsonId]
    public ObjectId Id { get; set; }
    
    [BsonIgnore]
    [SolrUniqueKey("id")]
    public string IdAsString
    {
      get { return Id.ToString(); }
      set { Id = ObjectId.Parse(value); }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-07
      • 2014-03-14
      • 2017-11-24
      • 2011-08-31
      • 2016-11-01
      • 1970-01-01
      • 2021-04-26
      相关资源
      最近更新 更多