ASP.NET MVC 3 Как обрабатывать связи «один ко многим» - PullRequest
2 голосов
/ 27 июня 2011

У меня есть объект домена Article, который может иметь несколько Shapes, тогда как тип является дочерним элементом статьи и не может быть связан с какой-либо другой статьей (один ко многим).

ассоциация моделируется как коллекция:

class Article
{
    int ID;
    string Name;
    ICollection<Shape> Shapes;
}

Если я создаю основу для этой сущности, сгенерированные контроллеры и представления, кажется, поддерживают только простые поля типа данных, такие как Name.Представления содержат поле ввода для Name.Если я отправляю заполненную форму, MVC-инфраструктура создает объект Article и присваивает свойству Name указанное значение.Этот объект передается методу контроллера.

Как добавить поддержку ассоциаций типа «один ко многим», таких как Shapes?Мне нужно следующее поведение представления Article в браузере:

  • Дочерние объекты перечислены в таблице.
  • Я могу добавить новый дочерний объект в таблицу, выполнивкоторый он создан и связан с базой данных.
  • Я могу редактировать отдельные свойства существующей записи.

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

public ActionResult Create(Article article)
{
    var types = article.Types;

Где types должен содержать все дочерние типы.Объекты, которые уже существовали ранее, должны иметь правильный идентификатор.Однако свойства должны отражать то, что пользователь установил в браузере (так же, как это делается для объекта Article).

Недавно добавленные объекты не будут иметь идентификатора и не будут существовать вбазы данных пока нет, моя работа как программиста состоит в том, чтобы извлекать объекты из коллекции и сохранять их в базе данных.

Мой вопрос:

Есть ли какая-либо поддержка вMVC 3 для отношений один ко многим?В качестве альтернативы, есть ли лучшие рекомендации, как реализовать это самостоятельно?

Обратите внимание, что многие ресурсы, использующие термин " один-ко-многим ", которые я нашел в Интернете, к сожалению, на самом делеговорить о один-к-одному или много-к-одному отношений, то есть, хотя вы можете выбирать из списка многих объектов, вы выбираете и связываете только одну.

...