属性'stageid'是一个无法识别的EdmPropertyKind。实体new_test具有重复的导航属性名称

时间:2016-04-19 06:17:49

标签: dynamics-crm-2011 dynamics-crm dynamics-crm-2013 dynamics-crm-2015 dynamics-crm-2016

我正在使用CRM2016

我创建了一个测试实体来复制问题

我没有对它进行任何自定义。我用默认字段和表单创建了一个新记录。然后我尝试访问webapi

http://localhost/CRMDataBase/api/data/v8.0/new_test(bgcs0249-0a06-e611-941a-003002djlnc)

它运作良好并带来了记录。然后我删除了记录并为它创建了一个业务流程,只有一个阶段和一个步骤

我激活它并添加了一个新的测试记录,并试图访问webapi网址并抛出以下错误

  

{“error”:{       “code”:“”,“message”:“属性'stageid'属于无法识别的EdmPropertyKind。实体new_test具有重复的导航属性   名。所有属性名称(Navigation和Structural属性)必须是   实体中的唯一“,”innererror“:{         “message”:“属性'stageid'是一个无法识别的EdmPropertyKind。实体new_test具有重复的导航属性   名。所有属性名称(Navigation和Structural属性)必须是   在实体中是唯一的   “,”type“:”Microsoft.Crm.CrmHttpException“,”stacktrace“:”at   Microsoft.Crm.Extensibility.OData.CrmODataEntityTypeSerializer.CreateSelectExpandNode(EntityInstanceContext   entityInstanceContext)\ r \ n at   System.Web.OData.Formatter.Serialization.ODataEntityTypeSerializer.WriteEntry(对象   graph,ODataWriter writer,ODataSerializerContext writeContext)\ r \ n
  在   System.Web.OData.Formatter.Serialization.ODataFeedSerializer.WriteFeed(IEnumerable的   enumerable,IEdmTypeReference feedType,ODataWriter writer,   ODataSerializerContext writeContext)\ r \ n at   Microsoft.Crm.Extensibility.OData.CrmODataFeedSerializer.WriteObject(对象   图,类型类型,ODataMessageWriter messageWriter,   ODataSerializerContext writeContext)\ r \ n at   System.Web.OData.Formatter.ODataMediaTypeFormatter.WriteToStream(类型   type,Object value,Stream writeStream,HttpContent内容,   HttpContentHeaders contentHeaders)\ r \ n at   System.Web.OData.Formatter.ODataMediaTypeFormatter.WriteToStreamAsync(类型   type,Object value,Stream writeStream,HttpContent内容,   TransportContext transportContext,CancellationToken   cancellationToken)\ r \ n ---从前一个位置开始的堆栈跟踪结束   抛出异常的地方--- \ r \ n at   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务   任务)\ r \ n at   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务   任务)\ r \ n at   System.Web.Http.WebHost.HttpControllerHandler.d__1b.MoveNext()”, “internalexception”:{           “message”:“属性'stageid'是一个无法识别的EdmPropertyKind。”,“type”:“Microsoft.OData.Core.ODataException”,“stacktrace”:“   在   Microsoft.OData.Core.UriParser.Parsers.SelectPathSegmentTokenBinder.ConvertNonTypeTokenToSegment(PathSegmentToken   tokenIn,IEdmModel模型,IEdmStructuredType edmType,ODataUriResolver   解析器)\ r \ n at   Microsoft.OData.Core.UriParser.Visitors.SelectPropertyVisitor.ProcessTokenAsPath(NonSystemToken   tokenIn)\ r \ n at   Microsoft.OData.Core.UriParser.Visitors.SelectPropertyVisitor.Visit(NonSystemToken   tokenIn)\ r \ n at   Microsoft.OData.Core.UriParser.Parsers.SelectBinder.Bind(SelectToken   tokenIn)\ r \ n at   Microsoft.OData.Core.UriParser.Parsers.SelectExpandBinder.Bind(ExpandToken   tokenIn)\ r \ n at   Microsoft.OData.Core.UriParser.Parsers.SelectExpandSemanticBinder.Bind(IEdmStructuredType   elementType,IEdmNavigationSource navigationSource,ExpandToken   expandToken,SelectToken selectToken,ODataUriParserConfiguration   配置)\ r \ n at   Microsoft.OData.Core.UriParser.ODataQueryOptionParser.ParseSelectAndExpand(个)\ r \ n   在   Microsoft.Crm.Extensibility.OData.CrmODataEntityTypeSerializer.CreateSelectExpandNode(EntityInstanceContext   entityInstanceContext)”         }       }}

如果我删除所有记录 - >停用业务流程 - >添加新数据,然后检查webapi,它工作正常。但是当我激活业务流程并添加新数据时,我收到了上述错误 P.S:我没有对业务流程和实体进行任何编码/定制。但我仍然收到此错误

可以采取哪些措施来解决这个问题?

1 个答案:

答案 0 :(得分:1)

看起来像Web API端点中的错误。 Community forums也引用同样的问题......

Web API端点仍有一些限制,并且它不能完全模仿OrganizationService行为,因此,对于下一个版本(9.xx),如果您遇到困难,可能尝试应用更新(然后使用v8) .1在网址中,或提出MS支持案例。

如果你仍然卡住,可以尝试使用OData / OrganizationService。