我有一个C#类,其id字段的类型为ObjectId:
[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的来源的情况下解决这个问题?
答案 0 :(得分:4)
对于任何感兴趣的人,以下是我在不修改SolrNet源代码的情况下最终完成的工作。
我在名为IdAsString的类中添加了一个额外的属性,并将其设置为&#34; BsonIgnore&#34;因此它不会存储在MongoDB中,但我使用该字段将其映射到Solr的id字段:
[BsonId]
public ObjectId Id { get; set; }
[BsonIgnore]
[SolrUniqueKey("id")]
public string IdAsString
{
get { return Id.ToString(); }
set { Id = ObjectId.Parse(value); }
}