Axapta 访问DataEntity:InvalidoperationException,“给定模型不包含类型'Microsoft.Dynamics.Ax.Xpp.EdtArray`1[System.Decimal]。”

Axapta 访问DataEntity:InvalidoperationException,“给定模型不包含类型'Microsoft.Dynamics.Ax.Xpp.EdtArray`1[System.Decimal]。”,axapta,x++,dynamics-365-operations,Axapta,X++,Dynamics 365 Operations,我正在使用一个从视图创建的数据实体。场景是PowerBI将通过d365实例的/data url使用该实体。当请求实体并生成json时,不会发生任何事情。当我从浏览器中打开WebDeveloperTools并请求该实体的url时,出现以下错误: { "error":{ "code":"","message":"An error has occurred.","innererror":{ "message":"The given model does not cont

我正在使用一个从视图创建的数据实体。场景是PowerBI将通过d365实例的/data url使用该实体。当请求实体并生成json时,不会发生任何事情。当我从浏览器中打开WebDeveloperTools并请求该实体的url时,出现以下错误:

    {
  "error":{
    "code":"","message":"An error has occurred.","innererror":{
      "message":"The given model does not contain the type 'Microsoft.Dynamics.Ax.Xpp.EdtArray`1[System.Decimal]'.",
      "type":"System.InvalidOperationException",
      "stacktrace":"   at System.Web.OData.Formatter.Serialization.ODataSerializerContext.GetEdmType(Object instance, Type type)\r\n   
                       at System.Web.OData.Formatter.Serialization.ODataEntityTypeSerializer.CreateStructuralProperty(IEdmStructuralProperty structuralProperty, EntityInstanceContext entityInstanceContext)\r\n   
                       at System.Web.OData.Formatter.Serialization.ODataEntityTypeSerializer.CreateStructuralPropertyBag(IEnumerable`1 structuralProperties, EntityInstanceContext entityInstanceContext)\r\n   
                       at System.Web.OData.Formatter.Serialization.ODataEntityTypeSerializer.CreateEntry(SelectExpandNode selectExpandNode, EntityInstanceContext entityInstanceContext)\r\n   
                       at System.Web.OData.Formatter.Serialization.ODataEntityTypeSerializer.WriteEntry(Object graph, ODataWriter writer, ODataSerializerContext writeContext)\r\n   
                       at System.Web.OData.Formatter.Serialization.ODataFeedSerializer.WriteFeed(IEnumerable enumerable, IEdmTypeReference feedType, ODataWriter writer, ODataSerializerContext writeContext)\r\n   
                       at System.Web.OData.Formatter.ODataMediaTypeFormatter.WriteToStream(Type type, Object value, Stream writeStream, HttpContent content, HttpContentHeaders contentHeaders)\r\n   
                       at System.Web.OData.Formatter.ODataMediaTypeFormatter.WriteToStreamAsync(Type type, Object value, Stream writeStream, HttpContent content, TransportContext transportContext, CancellationToken cancellationToken)\r\n
                       --- End of stack trace from previous location where exception was thrown ---\r\n   
                       at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   
                       at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Web.Http.Tracing.ITraceWriterExtensions.<TraceBeginEndAsyncCore>d__24.MoveNext()\r\n
                       --- End of stack trace from previous location where exception was thrown ---\r\n   
                       at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   
                       at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Web.Http.Owin.HttpMessageHandlerAdapter.<BufferResponseContentAsync>d__13.MoveNext()"
    }
  }
}
这意味着什么?更重要的是,我如何避免这种情况

数据源是一个名为“tsTimesheetsmmaryline”的视图。我复制了另一个实体,删除了其中的所有内容,删除了作为datasource的视图,然后将所有字段从datasource拖放到实体的字段中


我注意到视图中确实包含一个实数数组。显然,实数数组可以在视图中使用,但不能在实体中使用。 导致此异常的字段是小时,它存储7个实际值,一周中的每一天一个

解决方案:


我将dataEntity上的访问修饰符hours设置为Internal,为每个值Hours1到Hours7添加字段,并在dataEntity的OnPostingLoad事件处理程序中设置数组中这些字段的值

视图是否包含数组/十进制字段?删除这些字段时会发生什么?@FH它包含十进制字段,但不包含数组字段。数据源也不包含数组字段,数据源的数据源包含一个数组,但未使用该数组。数据源也有一些计算字段,但没有一个是数组,所以我很困惑这可能来自哪里。数据源是一个名为“tsTimesheetsmmaryline”的视图。我复制了另一个实体,删除了其中的所有内容,删除了作为datasource的视图,然后将所有字段从datasource拖放到entityOk的字段中,听起来很容易复制。当我有时间做的时候,我会让你知道我的结果。同时,您可能希望将您的评论中的信息添加到问题中,并添加您正在使用的D3FO的确切版本。这将使其他人更容易获得有关您的问题的相关信息,并且可能比我更早提供答案。@FH我更新了问题。过了一会儿,当我查看这些内容时,我注意到视图确实包含一个真实的数组hoursCorrect,OData不支持数组字段,请参阅OData,array fields一节。再看一看,Deepak Kumar在2018年12月4日的回答表明,新版本可能支持它。