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

使用DynamicObjects作为文档创建Azure搜索索引,azure,azure-cognitive-search,dynamicobject,Azure,Azure Cognitive Search,Dynamicobject,我正在尝试上载一系列文档,这些文档属于从DynamicObject派生的类。我之所以需要这样做,是因为当重新创建索引时,索引字段可能会更改。创建索引时一切正常,但是,上载文档时,会抛出一个错误: Microsoft.Rest.Azure.CloudException: 'The request is invalid. Details: actions : 0: Document key cannot be missing or empty. 这对我来说没有任何意义,因为索引包含一个IsKey标

我正在尝试上载一系列文档,这些文档属于从DynamicObject派生的类。我之所以需要这样做,是因为当重新创建索引时,索引字段可能会更改。创建索引时一切正常,但是,上载文档时,会抛出一个错误:

Microsoft.Rest.Azure.CloudException: 'The request is invalid. Details: actions : 0: Document key cannot be missing or empty.
这对我来说没有任何意义,因为索引包含一个IsKey标志设置为true的字段,并且文档正确设置了相应的字段。还值得一提的是,如果我注释掉从DynamicObject派生文档类的代码,那么一切都正常工作


有人经历过吗?非常感谢

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

为此,可以重写该方法以返回动态和静态属性的名称。下面的代码应该可以做到这一点:

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

您使用静态和动态属性的假设确实是正确的。非常感谢您,先生,您的推荐成功了!