Доступ к DataEntity: InvalidoperationException, «Данная модель не содержит тип« Microsoft.Dynamics.Ax.Xpp.EdtArray`1 [System.Decimal] » - PullRequest
0 голосов
/ 14 марта 2019

Я борюсь с DataEntity, который создается из представления.Сценарий заключается в том, что объект будет использоваться PowerBI через URL-адрес «/ data» из экземпляра d365.Когда запрашивается сущность и должен генерироваться 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()"
    }
  }
}

Что это значит и, что более важно, как я могу избежать этого?

Источником данных является представление, называемое TSTimesheetSummaryLine.я скопировал другую сущность, удалил все из нее, отбросил представление как источник данных, а затем перетащил все поля из источника данных в поля сущности

Я заметил, что представление содержит реальный массив (часы)

1 Ответ

1 голос
/ 22 марта 2019

По-видимому, реальные массивы могут использоваться в представлениях, но не в сущностях. Поле, которое вызывало это исключение, было «часы», оно хранит 7 реальных значений (по одному на каждый день недели).

Решение

Я установил модификатор доступа «hours» для dataEntity как «Internal», добавил поля для каждого значения («Hours1» - «Hours7») и установил значения для этих полей из массива в «OnPostingLoad» -EventHandler из dataEntity

...