У меня есть несколько DataTables со столбцом ID с включенным AutoIncrement как на стороне сервера MySQL, так и на стороне схемы ADO.NET (загружается из файла схемы XML). Я не хотел бы заботиться об этих идентификаторах при вставке строк, потому что их единственное использование - иметь первичный ключ для таблицы - здесь нет ссылок на внешние ключи. Однако DataTable уже будет содержать строки, когда будут добавлены новые строки, т.е. е. строки с идентификаторами, начинающимися с 1, уже находятся в DataTable.
Значение AutoIncrementSeed по умолчанию для столбца ID равно -1, а значение AutoIncrementStep равно 1 (только значения по умолчанию, предоставленные Visual Studio). Все выглядит вполне нормально, если я хочу вставить только две новые строки одновременно, потому что при создании с помощью dataTable.NewRow () они получают идентификаторы -1 и 0. Но если я хочу добавить третью строку, он получает идентификатор 1 назначено NewRow (). Впоследствии возникает ConstraintException, когда я хочу вставить новую строку с dataTable.Rows.Add (...), потому что уже есть строка с ID = 1.
Я полагаю, что отключение функции AutoIncrement для схемы ADO.NET не является решением, потому что тогда мне все равно придется убедиться, что идентификаторы уникальны, прежде чем добавлять строки с помощью .Rows.Add ()
Каким было бы простое / элегантное решение этой проблемы? Сейчас я не могу себе представить, что это очень необычная задача.
Спасибо!