据我了解,如果您在搜索文档中有一个枚举,它将被转换为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“
答案 0 :(得分:3)
Azure搜索不支持枚举类型作为字段类型。相反,您需要自己在枚举和其中一种受支持的数据类型之间进行映射(int或string,具体取决于您是希望标签还是基础值存储在索引中)。实现此目的的一种方法是使用[JsonIgnore]
标记您的枚举属性,然后实现所需字段类型的第二个属性,并在它与getter / setter中的枚举之间进行映射。请注意,您可以控制属性名称如何映射到具有[JsonProperty("...")]
属性的索引字段。
此外,您的模型类使用Guid
作为键字段的类型。这也不受支持。您可以使用相同的技术将您自己的Guid
属性映射到实际映射到相应索引字段的字符串属性。