在某些情况下,我想以与原始行相同的顺序复制一些行。因此,我希望可以按ID对原始行进行排序,然后以相同的方式创建新记录。
但是我不知道EF是否确保插入顺序,或者是否有某种配置可以确保插入顺序。
一种解决方案是使用事务处理,在添加新行之后执行SaveChanges()并最终提交事务。但是我想避免这种情况,因为这将使我使用许多SaveChanges(),并且如果由于某种原因由于某些原因而无法执行该操作,则分配的ID将丢失并且我将有空白。确实,这第二个原因并不重要,但我想尽可能避免出现空白。
谢谢。
答案 0 :(得分:1)
如果您的帐户具有足够的权限:
ExecuteSqlCommand(@"SET IDENTITY_INSERT [dbo].[TABLENAME] ON");
//do insert with original ids, meaning the primary key can't already exist in the target table
context.SaveChanges();
context.Database.ExecuteSqlCommand(@"SET IDENTITY_INSERT [dbo].[TABLENAME] OFF");