Наверное, всем известна проблема сохранения пустого значения в полях со списком в случае выбора значения из справочника с сохранением в таблицу ИД значения, при этом возникает исключение, что нельзя присвоить Null переменной типа Integer.
Сам я данную проблему до сих пор решал введением в справочник записи с ИД=0 посредством использования для источника данных списка подобного представления:
create view v_list_MyDictionary
as
select 0 as [ID], '' as [name]
union
select [ID], [name] from MyDictionary
Способ рабочий, но ноль это ноль, а не Null, и может возникнуть ситуация, когда невозможно использовать целочисленное значение, даже отрицательное.
Сегодня опробовал способ, простой как валенок.
Изменил в DataTable тип соответствующего поля с Int32 на Object. При этом соответствующий параметр в UpdateCommand оставил DbType=Int32, ProviderType=Int. Всё работает просто замечательно, даже Ctrl+0. Проблем с вводом не должно быть, ибо пользователь выбирает только из имеющихся значений в списке и не может вставить нечисловое значение. Подозреваю что могут быть задержки с преобразованием типов на больших объемах данных, но это отдельная история.
Вопрос знатокам. Какие могут быть подводные камни при использовании типа Object в полях таблиц типизированных наборов данных?