2013-05-31 2 views
-1

Как я могу получить данные из веб-службы (asmx) с помощью BreezeJs?Как доставить метаданные с помощью BreezeJs и ASP.NET WebServices?

Моя веб-служба asmx возвращает объекты DTO, которые не связаны с datacontext. Как я могу автоматизировать, доставлять метаданные на ветер, не используя метод metadata() из dbcontext?

Я уже просмотрел образец Эдмунда, но в этом примере мы должны вручную писать метаданные для каждого объекта. Могу ли я избежать его использования веб-службы asmx и объектов DTO?

ответ

1

Breeze в настоящее время принимает метаданные только в двух форматах, родном формате json и формате csdl (также преобразованном в json) (используется в моделях с поддержкой Entity Framework). Обратите внимание, что вы также можете доставлять эти метаданные в комбинации этих форматов. то есть через несколько вызовов importMetadata в тот же файл metadataStore.

Для вашего примера вам нужно будет создать метаданные для каждого из ваших типов DTO, но это, как правило, не является обременительным. Если у вас их много, вы также можете написать простое приложение, которое использует отражение для создания метаданных для вас.

1

Если у вас есть модель biggish, вам не нужно писать метаданные вручную. Существует более простой способ: использовать EF как инструмент для разработки метаданных!

Посмотрите на FoosMetadataProvider в DocCode.DataAccess.EF образца DocCode (download it). Он генерирует метаданные для класса Foo, который вообще не существует в любой базе данных! Вы могли бы моделировать свои DTO, как если бы они отображались в базе данных с EF.

Использование EF в качестве средства разработки метаданных - это быстрый способ генерации метаданных на сервере для моделей, которые на самом деле не используют Entity Framework для доступа к данным. Просто притворись, что это ... и затем проигнорируйте MetadataDbContext после этого.

Вам также не нужно носить EF в вашем производственном коде. Вы можете использовать его в отдельном проекте исключительно для создания метаданных. Вылейте эти метаданные в сценарий (есть пример этого в DocCode). Помните ... вы используете EF только как инструмент моделирования времени разработки. Никто не должен знать; Я обещаю, что не скажу.

p.s .: EF довольно хорош в этом бизнесе моделирования. Вы не злоупотребляете им, и я не думаю, что это взломать. Вы не используете полную фреймворк ... и так что. Вы также не используете все jQuery; это не помешало вам подавать его своим клиентам на каждой странице, не так ли?

Смежные вопросы