Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > Обработка System.Data.Table.ConstraintException


Автор: defender777 17.11.2009, 18:44
Здравствуйте.
Проблема есть такая:
На форме DataGridView,DataSet,BindingSource,BindingNavigator
В DataSet единственный DataTable у него единственный Constraint (primary)
На одно поле Например Name.Его можно изменять, но при нарушении этого Constraint
Нужно отловить исключение и сообщить пользователю, что такое значение в Name уже есть
Где и как обрабатывать исключения возникающие в Constraint,в случае когда работа происходит
внутри компонентов в связке DataGridView,DataSet,BindingSource,BindingNavigator.
(System.Data.Table.ConstraintException)
Спасибо.

Автор: KuMa1104 17.11.2009, 20:12
Цитата(defender777 @  17.11.2009,  18:44 Найти цитируемый пост)
Где и как обрабатывать исключения возникающие в Constraint,в случае когда работа происходитвнутри компонентов в связке DataGridView,DataSet,BindingSource,BindingNavigator.

Лучше чтоб их вообще небыло.

А вообще try, catch, finali

Добавлено @ 20:13
defender777 исключения сами посебе очень медленно обрабатываються.

Кроме того ИМХО практически всегда можно обойтись без них.

Автор: defender777 18.11.2009, 12:32
Да конечно понятно что в Primary полях нужно добиваться уникальности и решать это на сервере
и использовать там тип int (хотя в теории это вовсе не обязательно)
Но как быть с Unique? Ведь это свойство поля в DataTable для того и устанавливается чтоб ОБЕСПЕЧИТЬ
уникальность вводимых туда данных. Да оно и обеспечивает, только жестко пишет свое при возникающих ошибках.
Да скажите вы используй try catch finally и лови там свои exceptions. Но постойте, а как же компонентная модель?
Это же непоколебимый принцип. Да конечно во всех книжках мы видим как удобно соединять компоненты
DataGridView,DataSet,BindingSource,BindingNavigator все отлично скорость торжествует.
Но где тогда обрабатывать исключения? Как? Где в компонентах такая возможность? Выходит все принципы
(удобные бесспорно)  не обеспечены в самом каркасе ADO.NET? Что тогда уж спрашивать с рядовых.
Или вообще получается лучше писать свой фреймворк? (текущий же не поправишь)
Поправьте меня если  не прав. Спасибо.

Автор: mrbrooks 18.11.2009, 15:47
Цитата(defender777 @  18.11.2009,  12:32 Найти цитируемый пост)
Да конечно понятно что в Primary полях нужно добиваться уникальности и решать это на сервере
и использовать там тип int (хотя в теории это вовсе не обязательно)
Но как быть с Unique?

ключевое поле и уникальное - это не сколько разные вещи камрад. Не стоит их путать.

Цитата(defender777 @  18.11.2009,  12:32 Найти цитируемый пост)
а скажите вы используй try catch finally и лови там свои exceptions. Но постойте, а как же компонентная модель?
Это же непоколебимый принцип. Да конечно во всех книжках мы видим как удобно соединять компоненты
DataGridView,DataSet,BindingSource,BindingNavigator все отлично скорость торжествует.
Но где тогда обрабатывать исключения? Как? Где в компонентах такая возможность? Выходит все принципы
(удобные бесспорно)  не обеспечены в самом каркасе ADO.NET? Что тогда уж спрашивать с рядовых.
Или вообще получается лучше писать свой фреймворк? (текущий же не поправишь)


С первого захода сложно понять о чем суть, но тем не менее исключение - это скажем так - крайность. Любую неоднозначность должен решать программист. Не правильный подход - накидать всякой дичи, а затем заключить все это в тело исключения и возрадоваться.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)