ASP.net MVC: Где в моем дизайне я должен создавать / объявлять ключи сущностей? - PullRequest
1 голос
/ 27 августа 2009

При создании нового объекта сущности, который имеет значение внешнего ключа, мне нужно создать новый ключ Entity (Entity Framework в .net 3.5) для объекта, но у меня возникают проблемы с решением, где в моем приложении я должен это сделать .

Прямо сейчас, когда я создаю новую запись с внешним ключом, я создаю ключ сущности в контроллере (в этом случае идентификатор пользователя, полученный от поставщика членства), назначаю его объекту и передаю его хранилище сервисный слой.

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

1 Ответ

4 голосов
/ 27 августа 2009

Я думаю, что это вопрос разделения интересов. Репозиторий занимается поиском и добавлением / изменением / удалением сущностей. Он не должен отвечать за создание объектов. И наоборот, контроллер действительно не должен отвечать за построение сущностей (контроллер должен выполнять весь объем работы, необходимой для передачи данных в представление и обработки команд из представления, делегировать эти команды бизнес-логике ... Логика принадлежит в другом месте (например, в домене). Честно говоря, вы должны создать некоторый EntityBuilder для обработки процесса создания сущностей. Вы передадите объект плюс идентификатор пользователя сборщику, который затем предоставит вам полностью построенную сущность, которую затем можно будет передать в хранилище.

EDIT:

Даже с вашим изменением с «Репозитория» на «Сервисный уровень» принципал остается прежним. Делегируйте процесс создания вашей сущности выделенному строителю и поддерживайте разделение интересов.

...