Я хотел бы спросить о вставке новой записи в таблицу через структуру сущностей. Я написал первичный ключ (id и Department_id). Department_Id является постоянным, поскольку существуют отделы, и каждый отдел может создавать новые записи. Каждая запись копируется во все отделы. Идентификатор идентичен по отделу. Но это не может быть идентификатором для столбца, потому что, когда все отделы могут создать запись с Id = 1, но отдел_ид будет другим. Теперь я решаю, что создаю новую запись в фиктивной таблице, в которой есть столбец идентификаторов, и получаю это значение в столбце идентификаторов и сохраняю запись. Поэтому для каждой таблицы у меня есть специализированная таблица с идентификатором столбца для генерируемого значения Id.
Таблица Customer (Id int, Department_Id int,…) Id, Department_Id является первичным ключом.
Таблица CustomerIdentity (Id int identity (1,1), Dummy int null).
Я сохранил процедуру для сохранения новой записи:
declare @id int
declare @department_id int = 10 -- constant for department 10
insert into CustomerIdentity(Dummy) values (null)
set @id = scope_identity()
insert into Customer(Id, Department_Id, …) values (@id, @department_id, …)
Я выполняю рефакторинг этого кода, чтобы извлечь logi c из хранимой процедуры в C#, где у меня есть сущность Customer. Идентификатор не может быть идентификатором, потому что могут быть записи как:
Идентификатор | Department_Id
1 | 1 - запись из отдела 1.
1 | 2 - запись из отдела 2.
1 | N - запись из отдела N.
Итак, есть таблица идентификаторов, в которой хранится значение идентификатора для каждого отдела. Каждая запись из отдела 1..N копируется во все отделы. Как настроить EF для выдачи значения для столбца Id из другой таблицы?