2017-05-24 59 views
1

我正在使用实体框架,我有一个场景,我传递了一个设计不正确的数据库,我无法对其进行任何修改,因此请和我一起裸照。实体框架在插入时自引用主键

当我插入新记录并自动生成自动标识值时。然后,我必须随后使用在初始插入时生成的相同ID更新同一个表中的列。我能看到这个成就的唯一方法是首先保存,获得新的PK,然后进行更新。但是,有没有其他方式可以在1个数据库调用中完成?我知道我可以很容易地用存储过程来完成这个任务,但是现在我没有这个选项。请参阅下面的表结构。

人 是PersonID INT(自动识别) 名字 姓氏 HeadOfHouseholdID此表

+0

我不认为你可以通过一次调用来做到这一点(除非你可以使用存储的proc/insert触发器/等,你说你不能)。鉴于您需要设置字段,请确保将调用包装在事务中,以便在任何一个失败时不插入记录。开始事务 - >保存记录(插入) - >修改记录 - >保存记录(更新) - >提交事务 – AndrewP

+0

没有必要存储该信息,简单规则将执行相同的操作:如果HeadOfHouseHoldID是空获取PersonID –

+0

@SirRufo不是我的设计,根本不能修改数据库。他们在视图中使用该列,并且必须填充它才能工作。这是一个奇怪的场景。 – Scott

回答

0

有这可以在1个数据库调用来完成任何其他方式INT(FK到是PersonID)?

触发器或自定义SQL查询可以工作。但它可能不值得担心。