Недавно мы добавили новый "уровень" в нашу базу данных - добавлен ключ "Company_ID", который должен быть выше/до существующего поля ID Identity в таблицах всей базы данных.
Например, если в таблице были ID-поля, теперь у нее есть идентификатор Company_ID, затем идентификатор, а затем поля. Идея заключается в том, что это позволяет идентификатору автоматически увеличиваться для каждого значения Company_ID, которое предоставляется для функциональности (Company_ID 1 может иметь ID 1, 2, 3 и т.д., Company_ID 2 может иметь ID 1, 2, 3 и т.д.).
Поле автоинкремента остается как ID. Пример таблицы:
[dbo].[Project](
[Company_ID] [int] NOT NULL,
[ID] [int] IDENTITY(1,1) NOT NULL,
[DescShort] [varchar](100) NULL,
[TypeLookUp_ID] [int] NULL,
[StatusLookUp_ID] [int] NULL,
[IsActive] [bit] NOT NULL,
CONSTRAINT [PK_Project] PRIMARY KEY CLUSTERED
(
[Company_ID] ASC,
[ID] ASC
)
До того, как была введена информация о Company_ID, чтобы выполнить CREATE, мы просто заполнили поля DescShort, TypeLookUp_ID, StatusLookUp_ID и IsActive, а left ID - все, что было по умолчанию, возможно, 0.
Запись была успешно сохранена, а идентификатор был автоматически заполнен базой данных, а затем использован для выполнения SHOW через представление и т.д.
Теперь, однако, мы хотим установить Company_ID на указанное значение, оставить идентификатор и заполнить поля, как раньше.
_db.Project.Add(newProject);
_db.SaveChanges();
Да, мы хотим указать значение Company_ID. Мы хотим, чтобы идентификатор был автоматически заполнен, как и раньше. Мы получаем сообщение об ошибке:
Невозможно вставить явное значение для столбца идентификации в таблице "Проект" когда для параметра IDENTITY_INSERT установлено значение ВЫКЛ
Это вызвано указанием идентификатора Company_ID или поля ID? Вы знаете, как мы можем исправить эту проблему?