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