У меня есть объект Tag
, связанный с целой кучей других объектов. Я пытаюсь обработать Delete для этого объекта. Я просто не хочу удалять тег, если он связан с какими-либо другими объектами.
На данный момент я решаю это так:
if(tag.Stands.Count == 0 && tag.Skids.Count == 0
&& tag.Panels.Count == 0 && tag.Devices.Count == 0
&& tag.Cables.Count == 0 && tag.JunctionBoxes.Count == 0)
{
_db.Tags.DeleteObject(tag);
_db.SaveChanges();
}
Если я не проверяю все эти вещи, я, очевидно, получаю ошибку ограничения ссылки, например,
System.Data.SqlClient.SqlException: оператор DELETE конфликтовал
с ограничением ССЫЛКА "FKStandTag237968".
Я знаю, что можно обойти это с помощью каскадного удаления, но это настоящая бизнес-логика, что теги не следует удалять, если они связаны с любым другим объектом.
Есть ли способ, с помощью Entity Framework, который я могу проверить, не нарушу ли я никаких ограничений для БД перед попыткой сохранить удаление? Что-то вроде _db.IsValidToDelete(object)
?