在Azure搜索文档中使用枚举

时间:2017-05-31 11:14:06

标签: c# azure enums azure-search azure-search-.net-sdk

据我了解,如果您在搜索文档中有一个枚举,它将被转换为int。除非我做错了什么,否则这似乎不会发生,我能让它工作的唯一方法是将枚举转换为字符串。这似乎是错的。有人可以告诉我,如果我做错了或者这是不可能的吗?

示例:

public enum WebSearchRecordType{
    Unknown = 0,
    Doc1 = 1,
    Doc2 = 2
}

public class WebSearchDocument{
    public Guid Id {get;set;}
    public WebSearchRecordType RecordType { get; set; }
}

如果我在尝试创建索引时使用上述内容,我会收到以下错误:

  

消息:“属性recordType具有不受支持的类型   Web.Search.WebSearchRecordType \ r \ nParameter name:propertyType“

1 个答案:

答案 0 :(得分:3)

Azure搜索不支持枚举类型作为字段类型。相反,您需要自己在枚举和其中一种受支持的数据类型之间进行映射(int或string,具体取决于您是希望标签还是基础值存储在索引中)。实现此目的的一种方法是使用[JsonIgnore]标记您的枚举属性,然后实现所需字段类型的第二个属性,并在它与getter / setter中的枚举之间进行映射。请注意,您可以控制属性名称如何映射到具有[JsonProperty("...")]属性的索引字段。

此外,您的模型类使用Guid作为键字段的类型。这也不受支持。您可以使用相同的技术将您自己的Guid属性映射到实际映射到相应索引字段的字符串属性。