Где вы создаете пользовательскую модель (DTO) в коде сервера, чтобы Breeze мог связываться с сущностями EntityFramework?

Я разрабатываю SPA, используя Angular-Breeze-WebAPI-EntityFramework.

Теперь Breeze использует метаданные Entity Framework для создания собственных моделей Breeze. Мы используем это в нашем приложении для проверки Breeze.

До сих пор все было хорошо и легко. Теперь нам нужно создать страницу поиска (скажем, для запросов клиентов). Поиск может осуществляться по Customer.Name или по Product.Id (что возвращает список клиентов, купивших этот продукт). Результатом является ng-repeater, который отображает Customer.Name, Order.LastPlaced и т. д.

если вы запутались в таблицах и столбцах, забудьте об этом. Я только пытаюсь понять, что и объект поиска, и объект результата не совпадают 1: 1 с таблицами Entity (или объектами). Итак, очевидно , я чувствую необходимость создать пользовательский объект (один для поиска и один для результатов). Мой вопрос в первую очередь заключается в том, где и как мне создать этот объект?

Если я создам его на уровне данных, Breeze не будет иметь представления о метаданных для каждого из свойств (поскольку для этого он использует EF).

Я, очевидно, не могу создать только объект JavaScript, так как мне придется запрашивать базу данных (используя EF) для поиска и заполнения объекта.

Итак, где можно создать такой настраиваемый объект (обход нескольких таблиц), чтобы Breeze по-прежнему мог вычислять метаданные и выполнять проверку и тому подобное, когда возникает необходимость?

Спасибо вам всем.


person filya    schedule 01.04.2014    source источник


Ответы (1)


Вы можете создавать метаданные на клиенте для типов, о которых сервер либо не знает, либо не имеет схемы. См. http://www.breezejs.com/documentation/metadata-by-hand.

person Jay Traband    schedule 01.04.2014
comment
Я бы предположил, что даже обычное приложение будет использовать сотни DTO. Является ли наилучший подход ручным кодированием метаданных для всех из них? Просто кажется, что должен быть лучший способ. - person filya; 02.04.2014
comment
Многие из DTO в приложениях SPA представляют собой просто анонимные проекции, которые легко обрабатываются без каких-либо метаданных. Только если вы хотите связать результаты нескольких запросов друг с другом, вам нужны метаданные. Мы работаем над поставщиком отражения .NET, который будет создавать базовые метаданные, связанные с любым классом .NET, но нет сопоставимой концепции для большинства баз данных NoSql, таких как mongo, где такие метаданные просто невозможно получить из модели. У Вас есть какие-то предложения? - person Jay Traband; 02.04.2014