“System.String”类型的对象无法转换为“MongoDB.Bson.ObjectId”类型

Val*_*Val 0 solr mongodb solrnet

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

[BsonId]
[SolrUniqueKey("id")]
public ObjectId Id { get; set; }
Run Code Online (Sandbox Code Playgroud)

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

 <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 
Run Code Online (Sandbox Code Playgroud)

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

Val*_*Val 5

对于任何感兴趣的人,下面是我在不修改 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); }
}
Run Code Online (Sandbox Code Playgroud)