N-Tier - расположение ответственности для вставки и обновления - PullRequest
0 голосов
/ 11 мая 2011

Я создаю приложение, которое разделено на уровень данных (с использованием шаблона хранилища и EF 4.0), бизнес-уровень (POCO с дополнительной логикой) и уровень обслуживания (который предоставляется клиенту с помощью WCF).

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

Все комментарии приветствуются - я не могу решить сам!

Ответы [ 2 ]

0 голосов
/ 12 мая 2011

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

То, что вы используете EF, не имеет значения.

0 голосов
/ 11 мая 2011

Моя первая мысль: я думаю, что Entity Framework должна сама в себе разобраться, но я не уверен на 100% в этом.

Если бы EF не сделал это для вас, я бы поместил эту логику в хранилище. Например, вы передаете объект Customer в хранилище следующим образом: myRepository.Save (myCustomer);

, а затем в методе сохранения клиента он проверяет, назначен ли клиенту идентификатор или, возможно, вы можете попросить EF отследить его состояние, а затем выполнить вставку или обновление. Таким образом, независимо от того, где вызывается Save - веб-служба, пользовательский интерфейс и т. Д., Эта логика решается.

...