我想问一下如何通过实体框架将新记录插入到表中。我已经合成了主键(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