Динамическое представление моделей с проверкой - PullRequest
1 голос
/ 09 февраля 2012

Итак, у меня есть база данных, полная продуктов, которые имеют атрибуты, и эти атрибуты имеют значения. Мне нужно иметь возможность воссоздать это как объект C #, который я могу использовать в качестве модели представления.

По сути, мне нужно иметь возможность превратить то, что у меня есть в базе данных, в следующее:

public class Product
{
    public object Attribute { get; set; }
}

Полагаю, мне придется использовать для этого деревья отражений или выражений, но я не уверен. Мне также нужно включить проверку каждого атрибута. Я думал об использовании фреймворка под названием Clay , чтобы сделать это, хотя я не знаю, смогу ли я получить проверку и / или смогу POST вернуть эту модель представления обратно в контроллер.

Есть идеи?

РЕДАКТИРОВАТЬ: Спасибо за ответы всем, но я, должно быть, не дал понять, что я искал по моей ошибке ... Я искал использование DynamicObject для создания объекта из данных, которые у меня есть в базе данных. Я просто не уверен, как использовать DynamicObject для создания DataAnnotations во время выполнения.

Ответы [ 2 ]

1 голос
/ 09 февраля 2012

Райан,

Согласно комментарию LiquidPony, я бы включил Entity Framework в микс. Существует множество точек входа для использования EF: сначала База данных, Модель-сначала или Код-Сначала. Для ваших целей сначала подойдет база данных. По сути, вы просто указываете холст дизайнера edmx на свое соединение с БД, а затем «перетаскиваете» нужные вам таблицы на поверхность. Затем создаются необходимые классы сущностей, которые можно использовать в вашем сервисном слое / контроллере с помощью linq.

Прелесть здесь в том, что все ваши отношения с внешними ключами правильно представлены, и вы можете относительно легко получать доступ к дочерним коллекциям и т. Д.

До EF я действительно использовал шаблоны T4 и рефлексию для вывода своих классов отображения db, и хотя это был «успех», это был также постоянный кошмар обслуживания, поскольку я должен был помнить добавлять новые свойства, если db изменяется и т.д. С EF, вы просто нажимаете «обновить», и все это сделано для вас. Теперь, если бы это был новый проект, вы могли бы сделать один шаг «лучше» и использовать EF Code-First. Это позволяет вам создать модель вашего домена вручную и сгенерировать базу данных в соответствии с требованиями модели. Это имеет реальные преимущества в области создания автономных компонентов, которые разработаны как часть более крупной системы.

См .:

Сначала код и модель / База данных

и

http://blogs.msdn.com/b/adonet/archive/2011/03/15/ef-4-1-model-amp-database-first-walkthrough.aspx

для хороших резюме каждого подхода.

Надеюсь, это даст некоторые идеи.

0 голосов
/ 09 февраля 2012

Если вы используете MVC3, то типичный способ, которым я видел это, - это использование Entity Framework и ненавязчивого Javascript / DataAnnotations для проверки.

Проверка учебник

MVC3 + EF4 учебник

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...