Я создаю систему баз данных в C# для библиотечной системы (используя базу данных Access), и я ударил кирпичную стену. У меня есть таблица под названием «BSUser», которая имеет столбец автоинкремента для первичного ключа «UserID»; Я хочу, чтобы это было автоматически сгенерировано, если пользователь не вводит значение при определении нового пользователя, но я также хочу, чтобы он мог принять значение, определенное вручную. Я использую следующий код для создания моей новой строки, учитывая информацию, введенную пользователем. Обратите внимание на проверку того, является ли нулевой идентификатор пользователя ...Как вручную установить идентификатор для столбца AUTOINCREMENT с помощью созданного конструктором DataTable?
BookshelfDataSet.BSUserRow user = dataSet.BSUser.NewBSUserRow();
if (userID != null) user.UserID = userID.Value;
user.Forename = forename;
user.Surname = surname;
user.IsAdmin = isAdmin;
dataSet.BSUser.AddBSUserRow(user);
SaveDataSetToDatabase();
Вот код, который должен обновить базу данных ...
private void SaveDataSetToDatabase()
{
this.bookTableAdapter.Update(this.dataSet);
this.copyTableAdapter.Update(this.dataSet);
this.userTableAdapter.Update(this.dataSet);
this.loanTableAdapter.Update(this.dataSet);
this.ratingTableAdapter.Update(this.dataSet);
}
Строка успешно сохраняются в базе данных, но его идентификатор автоматически создается, несмотря на то, что я установил его вручную. Это проблема, так как у существующих пользователей библиотеки уже есть идентификаторы из старой системы, поэтому мне нужно перенести их в новую систему. Пожалуйста, может кто-нибудь сказать мне, что я делаю неправильно, и как решить проблему?
Какая цель это послужит? – Plutonix
Пользователи библиотеки имеют библиотечную карточку со штрих-кодом; Поэтому я должен иметь возможность набирать эти штрих-коды для существующих пользователей для их настройки в новой системе. Существуют также штрих-коды, прикрепленные к существующим книгам, чтобы однозначно идентифицировать их. Я хочу иметь соответствующие столбцы как автоинкремент, поэтому, когда новые пользователи или книги .etc. добавляются в базу данных (которые еще не имеют штрих-кода), система сможет генерировать идентификаторы и штрих-коды для новых объектов. –
Создайте новый основной ключ в таблице, который является идентификатором GUID или строкой или автоинкремент. Создайте индекс в старом Pkey-поле, и у вас будет лучшее из обоих миров, абсолютный уникальный идентификатор для каждой строки и уникальный идентификатор для элемента. –