Могут ли аннотации данных EF 6 отличаться для POST, чем PUT или GET?

Вопрос:

Мы создаем веб-службу RESTful, где иногда есть поля для POST, а не PUT. Например, поле типа CustomerSinceDate разрешено устанавливать в вставке, но не в обновлении. Есть ли способ установить это с помощью аннотаций данных?

Ответ №1

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

То, что вы ищете, является валидацией.

Таким образом, в вашей службе REST вы должны проверить, изменилось ли CustomerSinceData, и объект обновляется. Если это так, вы должны выбросить исключение с соответствующим сообщением для потребителя.

Вот статья о написании собственных DataAnnotations, если вы предпочитаете использовать их:

http://msdn.microsoft.com/en-us/data/jj819164#attributes

В противном случае ознакомьтесь с этой статьей о том, как написать собственную собственную проверку: http://msdn.microsoft.com/en-us/data/gg193959.aspx (в частности, раздел о IValidatableObject).

Ваше правило может быть сформулировано как (псевдокод)

//if object exists in db AND CustomerSinceData has changed

DataAnnotations доставит вам долгий путь, но может быть утомительным для написания, если вы пишете бизнес-логику, которая никогда не будет использоваться повторно нигде.

Оцените статью
TechArks.Ru
Добавить комментарий