使用DynamicObjects创建Azure搜索索引作为文档

时间:2017-12-20 14:46:16

标签: azure azure-search dynamicobject

我正在尝试上传一系列文档,这些文档属于一个派生自DynamicObject的类。我需要这个,因为索引字段可能会在重新创建索引时发生变化。索引创建时一切正常,但是,在上传文档时,会抛出错误:

Microsoft.Rest.Azure.CloudException: 'The request is invalid. Details: actions : 0: Document key cannot be missing or empty.

这对我没有任何意义,因为索引包含一个IsKey标志设置为true的字段,并且文档也正确设置了相应的字段。还值得一提的是,如果我注释掉从DynamicObject派生文档类的代码,一切都能正常工作。

有没有人经历过这个?非常感谢!

1 个答案:

答案 0 :(得分:1)

由于您的文档类型继承自DynamicObject,我假设您同时拥有静态属性和动态属性。确保文档对象已正确序列化。

为此,您可以覆盖GetDynamicMemberNames方法以返回动态和静态属性的名称。以下代码应该可以解决问题:

public override IEnumerable<string> GetDynamicMemberNames()
{
   return base.GetDynamicMemberNames().Concat(this.GetType().GetProperties().Select(p => p.Name));
}