Как динамически создать динамический объект передачи данных из модели ADO.net - PullRequest
1 голос
/ 15 февраля 2011

У меня довольно простая база данных с 5 таблицами, настройками PK и отношений и т. Д. У меня также есть проект ASP.net MVC3, который я использую для создания простых веб-сервисов для передачи JSON / XML в мобильное приложение с помощью post /получить.Для доступа к моим данным я использую класс модели сущностей ADO.net для обработки создания сущностей и т. Д.

Из-за проблем с сериализацией / циклическими ссылками, созданными автоматически сгенерированными отношениями из сущности ADO.netВ этой модели я был вынужден создать «Объекты передачи данных», чтобы исключить отношения и данные, которые не нужно передавать.

Вопрос 1: существует ли более простой способ создания DTO с использованием сущностисама структура?IE, указать только те свойства объекта, которые я хочу преобразовать в Jsonresults?Я не хочу использовать какие-либо сторонние фреймворки, если смогу помочь.

Вопрос 2: Дополнительный вопрос для Entity Framework, скажем, я создаю модель сущности ADO.net в одном проекте в рамках решения.Поскольку эта модель опирается на соединение с базой данных, указанной в проекте A, может ли проект B каким-либо образом использовать эту модель с аналогичным соединением?Оба проекта находятся в одном решении.

Спасибо!

Ответы [ 2 ]

4 голосов
/ 15 февраля 2011

Я был вынужден создать «Объекты передачи данных», чтобы удалить отношения и данные, которые не нужно передавать.

А ты думаешь, что это что-то плохое? Наоборот, именно так должно работать правильно разработанное приложение ASP.NET MVC: оно должно использовать модели представлений. И не только для действий, возвращающих JSON, но и для ВСЕХ действий. Вы должны избегать передачи своих моделей EF в представления. Взгляды никогда не должны знать о существовании EF. Модели представлений - это классы, специально разработанные для соответствия требованиям представления. Таким образом, контроллер запрашивает хранилище для выборки модели (EF), сопоставляет ее с моделью представления и передает ее представлению, которое будет показано. Чтобы упростить это сопоставление между вашими моделями и представлениями моделей, вы можете использовать AutoMapper .

1 голос
/ 15 февраля 2011

RE: Вопрос 2: Конструктор ObjectContext перегружен, чтобы принимать различные EntityConnections и строки подключения. Одна из перегрузок должна привести вас туда, куда вам нужно.

...