Проверка набора данных для типа (C#.NET)


Я работаю с проверкой наборов данных в моем проекте. Я провожу проверку, когда событие DataTable_ColumnChanged срабатывает в частичном классе dataTable и выполняет свою работу, но я хотел бы также проверить несоответствие типа данных на уровне набора данных, а не пользовательского интерфейса, чтобы предоставить пользовательское сообщение об ошибке. Если [someID] ожидает номер, но кто-то вводит строку в текстовое поле, например.

Проблема в том, что dataSet обрабатывает этот тип ошибки где-то до возникновения события DataTable_ColumnChanged, и никогда смени колонку, я это понимаю.

Поэтому вопрос в том, где и как его перехватить. Я хочу обработать это в частичном классе dataTable, обернуть в свойство или что-то еще, но VS сгенерировал кучу кода, и я не знаю, где искать :) спасибо.
2 2

2 ответа:

Это не совсем ответ на ваш вопрос, но когда вы упомянули, что VS создает кучу слизи, это заставило меня подумать, что вы, вероятно, используете функцию перетаскивания для выполнения этой задачи. Отчасти именно поэтому, как вы уже отмечали, вы не можете понять, что происходит.

Этот код от студии делает его более сложным для вас. Если бы я предложил рассмотреть удаление этого автоматически генерируемого набора данных и создание собственного набора типизированных данных для его замены, если вы находитесь на ранней стадии своего проекта. Если вы находитесь в положении, в котором вы можете сделать это изменение в более здравом типизированном наборе данных, это поможет вам не попадать в ситуации, в которых вы находитесь сейчас.

Более того, если у вас есть время, вы можете рассмотреть проект, который вообще не использует наборы данных, но это, безусловно, гораздо больше, чтобы взять на себя. Большинство людей используют решение ORM, такое как NHibernate или что-то подобное, чтобы делать то, для чего мы использовали наборы данных. Очевидно, если есть время или внешние факторы, которые заставляют вас использовать наборы данных, то забудьте об этом соображении ORM-но подумайте об удалении автоматически созданного набора данных и создании вместо него типизированного набора данных. Это будет намного легче для вас.

Событие ColumnChanging?\

События набора данных