Я хотел бы сообщить пользователю точную причину, по которой запись не может быть удалена, у меня есть этот код для выполнения удаления:
try{
var table = Context.GetTable<TRecordType>();
lock (table) {
table.DeleteOnSubmit(recordToDelete);
Context.SubmitChanges();
}
catch (Exception ex) {
//Put back record
throw new Exception("Could not perform dataservice delete operation", ex);
}
Как видите, это довольно просто, но обычно запись не может быть удалена из-за ограничения внешнего ключа, поэтому я получаю это SQLException с сообщением вроде: «Оператор DELETE конфликтует с ограничением REFERENCE« FK_Something »... Возник конфликт в базе данных «X», таблица «dbo.Department», столбец «DepartmentId». Теперь то, что я действительно хотел бы сделать, это по крайней мере сообщить пользователю, что он не может удалить запись, потому что на нее ссылается эта таблица, упомянутая в исключении. I ' Я ненавижу анализировать текст для этого, это единственный способ? Также было бы очень хорошо, если бы я мог получить ссылку на запись, нарушающую ограничение, чтобы я мог сказать пользователю: «вы не можете удалить документ A, поскольку упоминается в документах B, C и D ".