Клиентские лимиты 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