Клиентские лимиты oData

В настоящее время я тестирую клиент oData в сочетании с Dynamics AX 7. Файл метаданных, поступающий из AX, имеет размер более 900000 строк, и если я использую клиент oData по умолчанию и автоматически генерирую файл класса C#, он не будет создан из-за слишком большого количества строковые литералы (ошибка.net).

Теперь я ищу способ сообщить клиентскому генератору, какие классы генерировать (например, по имени сущности), а какие нет (около 95% не требуется на стороне клиента).

К сожалению, ограничение метаданных на стороне AX не вариант.

2 ответа

Решение

У нас была похожая проблема, где мы должны были изменить доступные $metadata информация от службы ODATA. В нашем случае мы использовали DataServiceContext генератор и указал на исходный URI сервера, но использовал Fiddler в качестве промежуточного прокси. Используя точку останова в Fiddler, мы могли бы обслуживать наш модифицированный $metadata XML к DataServiceContext генератор в Visual Studio. Работает нормально, когда вы использовали экономно и если API стабильный.

Да, использование VS2015 решит вашу ошибку "слишком много строк", но у вас все равно будет проблема, когда Visual Studio 2015 будет аварийно завершать работу, если вы откроете огромный файл, который создается, или случайно войдете в файл клиента oData во время отладки.

Чтобы обойти эту проблему, я отредактировал шаблоны T4, которые автоматически генерируют клиентские классы oData, чтобы они создавали несколько файлов, чтобы у вас не было одного огромного файла с миллионами строк. Используя обновленные шаблоны T4, он сгенерирует тот же код, но будет разбиваться на новый файл каждые 5 МБ.

Обновленные шаблоны T4 можно найти здесь: https://github.com/batetech/D365FO-oData-T4-MultiFile-Templates

Другие вопросы по тегам