|
Где и как проводить валидацию при сохранении сущности
|
|||
---|---|---|---|
#18+
Использую репозиторий на основе NHibernate При сохранении/обновлении сущности может случиться ситуация, когда это сделать невозможно - нарушаются ограничения целостности БД. Для этого надо перед выполнением операции проверить возможность её выполнения и, в случае невозможности, выдать соответствующее исключение. Я вижу пока только два варианта: 1. Вообще не разделять объекты BLL и DAL (что, собственно и делаю) - объект бизнес-логики будет содержать в себе и логику доступа к данным. 2. Эту задачу возложить на DAL (что опять таки косвенно сводится к варианту 1.) Посоветуйте, пожалуйста, как лучше сделать. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2012, 18:51 |
|
Где и как проводить валидацию при сохранении сущности
|
|||
---|---|---|---|
#18+
это в формах Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52.
пихать логику проверки сюда? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2012, 19:09 |
|
Где и как проводить валидацию при сохранении сущности
|
|||
---|---|---|---|
#18+
kmawПри сохранении/обновлении сущности может случиться ситуация, когда это сделать невозможно - нарушаются ограничения целостности БДНу и хорошо. Они там для того и есть. Зачем их дублировать? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2012, 19:11 |
|
Где и как проводить валидацию при сохранении сущности
|
|||
---|---|---|---|
#18+
а, да, забыл сказать - скачал пример для работы - типа "фен-шуй" - на основе него и тренируюсь Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
сюда логику проверки (после перегрузки) воткнуть? то же не камильфо ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2012, 19:12 |
|
Где и как проводить валидацию при сохранении сущности
|
|||
---|---|---|---|
#18+
Алексей К, чтобы обработать ситуацию их нарушения и правильно сформировать дальнейшие действия в программе. ОРМ юзаю ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2012, 19:15 |
|
Где и как проводить валидацию при сохранении сущности
|
|||
---|---|---|---|
#18+
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30.
так было в примере. Но это происходит на уровне UI. что я в ступоре... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2012, 19:33 |
|
Где и как проводить валидацию при сохранении сущности
|
|||
---|---|---|---|
#18+
на уровне UI хотелось бы поймаль соответствующий эксепшн - и все, этим UI и ограничить ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2012, 19:36 |
|
Где и как проводить валидацию при сохранении сущности
|
|||
---|---|---|---|
#18+
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29.
вот так выглядит бизнес-объект. такой чистый... жалко его скрещивать с объектом достпа к данным ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2012, 20:17 |
|
Где и как проводить валидацию при сохранении сущности
|
|||
---|---|---|---|
#18+
я на шаг от разочарования в DDD вот тут смомневался ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2012, 20:19 |
|
Где и как проводить валидацию при сохранении сущности
|
|||
---|---|---|---|
#18+
хотя это все может и не в тему - ну реально не знаю что делать! ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2012, 20:20 |
|
Где и как проводить валидацию при сохранении сущности
|
|||
---|---|---|---|
#18+
kmawна уровне UI хотелось бы поймаль соответствующий эксепшн - и все, этим UI и ограничитьНу и лови эксепшен от ограничений целостности в БД. В чём проблема-то? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2012, 05:36 |
|
Где и как проводить валидацию при сохранении сущности
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2012, 11:39 |
|
Где и как проводить валидацию при сохранении сущности
|
|||
---|---|---|---|
#18+
SolYUtor, спасибо за пример. я его пока не вкурил - сложно - пример использования этой библиотеки на MVC - а у меня VS2008 без оного. но суть вопроса была в том, что я думаю, где именно размещать логику валидации, связанную с ограничениями БД, которая будет ВСЕ знать о прикладном характере этих ограничений. Если ловить исключение, типа "Невозможно вставить NULL", "Сработал констрейн", "Нарушение уникальности" и т.п., то их потом надо будет "расшифорвывать". Пока решил сделать так - за операции отвечает "контроллер" (WebForms) - некоторая прослойка между UI и репозиторием, которая имеет ссылки на репозиторий и бизнес-объект. Вроде все складно получается: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42.
сомнения есть, однако, в правильности ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2012, 19:44 |
|
Где и как проводить валидацию при сохранении сущности
|
|||
---|---|---|---|
#18+
kmawЕсли ловить исключение, типа "Невозможно вставить NULL", "Сработал констрейн", "Нарушение уникальности" и т.п., то их потом надо будет "расшифорвывать".Тебе не кажется, что проще извлечь из текста сообщения прикладной смысл банальным поиском подстроки с названием ограничения, чем городить слой проверок, дублирующих ограничения с СУБД? Код: c# 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2012, 19:58 |
|
Где и как проводить валидацию при сохранении сущности
|
|||
---|---|---|---|
#18+
Алексей К, я рассматривал этот вариант. но в каком месте производить анализ строки сообщения (или тип ексепшна)? UI - не вариант. Репозиторий - тоже. Так вроде и остается только этот мой контроллер. Но я думаю не парсить строки сообщений - а предварительно проверять возможность сохранения ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2012, 20:04 |
|
Где и как проводить валидацию при сохранении сущности
|
|||
---|---|---|---|
#18+
kmawАлексей К, я рассматривал этот вариант. но в каком месте производить анализ строки сообщения (или тип ексепшна)? UI - не вариант. Репозиторий - тоже. Так вроде и остается только этот мой контроллер.Организуй централизованную обработку неперехваченных исключений. Анализируй, преобразуй и пиши в лог. зы: Сообщения на экране можно рассматривать как одну из разновидностей лога. kmawНо я думаю не парсить строки сообщений - а предварительно проверять возможность сохраненияЕсли не лень заниматься двойной работой - в добрый путь. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2012, 20:11 |
|
Где и как проводить валидацию при сохранении сущности
|
|||
---|---|---|---|
#18+
Алексей К Код: c# 1. 2.
это совсем жестко ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2012, 20:11 |
|
Где и как проводить валидацию при сохранении сущности
|
|||
---|---|---|---|
#18+
kmawАлексей К Код: c# 1.
это совсем жесткоЯ бы сказал, дёшего и сердито. Главное, давать констреинтам/индексам в БД уникальные и осмысленные названия. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2012, 20:14 |
|
Где и как проводить валидацию при сохранении сущности
|
|||
---|---|---|---|
#18+
не лень - главное чтобы это было системно. а разбор строк - это хардкорно ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2012, 20:14 |
|
Где и как проводить валидацию при сохранении сущности
|
|||
---|---|---|---|
#18+
kmawне лень - главное чтобы это было системно. а разбор строк - это хардкорноЭто просто громкие слова, пока не сформулируеш, хотябы для себя, конкретные проблемы, которые могут возникнуть при этом подходе. Если считаеш, что простой поиск подстроки недостаточно надёжен - делай более сложный разбор, можно с применением регулярок. Но я считаю это лишним. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2012, 20:18 |
|
Где и как проводить валидацию при сохранении сущности
|
|||
---|---|---|---|
#18+
к тому же и триггер может сработать - который N-условий проверяет - тоже ексепшн - тут с разбором строк совсем грустно получится ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2012, 20:18 |
|
Где и как проводить валидацию при сохранении сущности
|
|||
---|---|---|---|
#18+
да и в конце-концов - не все ограничения могут быть в БД реализованы, те же триггеры отсутствовать, например - разные люди делают ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2012, 20:23 |
|
Где и как проводить валидацию при сохранении сущности
|
|||
---|---|---|---|
#18+
kmawк тому же и триггер может сработать - который N-условий проверяет - тоже ексепшн - тут с разбором строк совсем грустно получитсяСообщения в триггере могут быть для этого оформлены специальным образом и формироваться специально обученной для этого хранимой процедурой. Например: Код: c# 1. 2.
Можно задействовать пользовательские коды ошибок. Тут всё зависит от используемой СУБД и желания. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2012, 20:25 |
|
Где и как проводить валидацию при сохранении сущности
|
|||
---|---|---|---|
#18+
kmawда и в конце-концов - не все ограничения могут быть в БД реализованыНу ты же спросил как быть с именно ограничениями в БД. Пусть помимо БД тоже будет логика. Я не против. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2012, 20:27 |
|
|
start [/forum/topic.php?fid=17&msg=37859620&tid=1350307]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
62ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 182ms |
0 / 0 |