将Excel导入SQL Server,并使用实体框架插入和更新

将Excel导入SQL Server,并使用实体框架插入和更新,excel,insert,entity,Excel,Insert,Entity,我有一个excel文件,我想使用实体框架基于现有数据库表导入excel文件。现在,我首先将excel工作表转换为DataTable,并通过DataTable的每一行进行循环。每一行都有一个id字段,如果该id存在于数据库表中,我需要更新它,否则我需要将该行插入数据库表。我想使用实体框架将我的循环封装到一个事务中,以便在发生错误时回滚。但我遇到了一个场景,两行具有相同的id,但值不同。第一行被选中并添加到我的实体集合中,但第二行可能被错误地更新到第一行,因为第一行由于延迟的上下文而没有实际添加。在

我有一个excel文件,我想使用实体框架基于现有数据库表导入excel文件。现在,我首先将excel工作表转换为DataTable,并通过DataTable的每一行进行循环。每一行都有一个id字段,如果该id存在于数据库表中,我需要更新它,否则我需要将该行插入数据库表。我想使用实体框架将我的循环封装到一个事务中,以便在发生错误时回滚。但我遇到了一个场景,两行具有相同的id,但值不同。第一行被选中并添加到我的实体集合中,但第二行可能被错误地更新到第一行,因为第一行由于延迟的上下文而没有实际添加。在循环后调用SaveChanges()。如何更新实体集合中先前添加的行,而不在循环中重复调用context.SaveChanges()?谢谢

我认为在过去十年左右的时间里我没有这样做过,但我已经使用Microsoft Word的邮件合并为Excel工作表中的每一行创建了所需的SQL语句(选择、插入和更新)。一旦我得到了文本形式的长SQL语句,我只需将它复制粘贴到控制台中,语句就被执行了,工作也就完成了。我相信有更好的方法来做到这一点,但它在当时的知识有限,但需要。这个答案可能属于“不要在工作中尝试,但如果在家里做就可以了”