实体框架插入到具有来自另一个表的标识的表中

我想问一下如何通过实体框架将新记录插入到表中。我已经合成了主键(id和department_id)。Department_Id是常量,因为有部门,每个部门都可以创建新记录。每条记录都会复制到所有部门。Id是部门的标识。但它不能是列上的标识,因为当所有部门都可以使用Id=1创建记录时,但department_id将是不同的。现在我解决了这个问题,我在有identity列的虚表中创建了新的记录,并将这个值放入Id列并保存记录。因此,对于每个表,我都有专门的表,其中包含identity列和生成的ID值。

表Customer (Id int,Department_Id int,…)Id,Department_Id为主键。

表CustomerIdentity(Id int identity(1,1),虚拟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, …) 

我重构了这段代码,将存储过程中的逻辑提取到拥有Customer实体的C#中。Id不能是identity,因为可能有如下记录:

Id | Department_Id

1 |1 --部门1的记录。

1| 2 --部门2的记录。

1| N --部门N的记录。

因此有一个Identity表,其中包含每个部门的标识值。部门1..N中的每条记录都被复制到所有部门。如何设置EF为另一个表中的Id列赋值?

转载请注明出处:http://www.wxmcsj.com/article/20230331/1457857.html