我有一个实体框架应用程序。有一个表开始引起很多问题,主要是因为它不遵循 EF 约定:
两个重要的列是RequestType
和RequestDetailId
。每种类型的请求都有自己的标识列。由于这些身份可以跨表重叠,因此有一个RequestType
字段可以将批准唯一地关联到请求。
我计划用一个Approval
表和一个单独的多对多表替换这个“一个真正的查找表”,每个请求表都有一个单独的多对多表,将请求链接到批准:
我已经有几个请求指向这个新的批准表,我喜欢它在 EF 中的工作方式。但是,我很难从旧表迁移到新表。到目前为止,我一直在用游标遍历旧数据,插入新Approval
表并使用标识(SELECT SCOPE_IDENTITY()
)插入多对多表。我需要一个游标,因为我需要跟踪每个新批准记录的批准标识值,所以我可以用它填充多对多表。
我很好奇是否有人知道无需光标即可进行两次插入的方法。光标很好,但它们很难阅读。
一种想法是临时向Approval
表中添加一个请求 ID 字段,使用请求 ID 插入批准,然后将该信息加入旧表以填充多对多表。在两次插入之后,我会删除请求 ID 列。我不喜欢将可为空的请求 ID 列添加到现有表只是为了进行迁移的想法。
我很好奇是否有人可以想办法在不使用游标的情况下将旧查找表拆分为新的批准/多对多表。