#entity-framework #breeze
#entity-framework #breeze
Вопрос:
У меня есть Объект, скажем, «Автомобиль», который имеет много связей с другими объектами. Одно из отношений связано с сущностью «ParkingSpot». Отношение в Entity Framework — это 1 автомобиль ко многим парковочным местам, но оно всегда 1 к 1, просто 1 ко многим в EF, что является другой историей.
Я бы хотел использовать метод удаления на стороне сервера, который выполняет следующее —
- Выполните проверку ошибок (для всех отношений с ограничением FK, кроме ParkingSpot), удобные для пользователя ошибки поставщика
- Удалите этот автомобиль из точки парковки (так что удаление сработает, если все остальные ошибки ограничения пройдут)
- Удалить Автомобиль
Прямо сейчас у меня есть метод
[HttpGet]
public bool DeleteCar(int carId)
я создаю исключение HttpResponseException для каждой ошибки. Таким образом, пользователь может получить сообщение об ошибке, устранить проблему, повторить попытку, получить другую ошибку и т.д., Что довольно неубедительно. Я попытался вызвать исключение EntityErrorsException с набором ошибок EFEntityErrors, как описано здесь — http://www.breezejs.com/documentation/server-side-validation
Но это было только в виде строки JSON в данных httpresponse, возможно, потому, что это не было сделано в BeforeSaveEntitiesDelegate, как показано в статье? Я действительно не могу сделать это здесь, потому что в других случаях требуется удалить этот объект другими способами, при которых вы хотели бы, чтобы ограничение «ParkingSpot» не выполнялось.
Каков наилучший способ обеспечить такую проверку?
Комментарии:
1. Не могли бы вы более подробно объяснить, почему вы не можете выполнить проверку внутри
BeforeSaveEntities
. Я подозреваю, что вы найдете способ сделать это там.2. @david004 — В одном сценарии мне нужно убрать машину с места парковки, а затем удалить машину. В других сценариях я хочу, чтобы удаление завершилось неудачно, если оно находится в месте парковки. Так что у меня действительно есть другой параметр для этого сценария public bool DeleteCar(int carId, bool removeFromSpot)