一尘不染

一次插入或更新多个表的最佳实践是什么

sql

如果我需要通过一个“动作”来更新或插入到多个表中,请调用一个保存信息的示例,其中有多个包含“信息”的表。

出于参数考虑,可以说我们有下表:

姓名地址汽车工作

每次调用保存信息时,都会将其中的每个表插入其中。

哪个更好:

  1. 获取必须写入名称表的数据。调用InsertOnSubmit并调用SubmitChanges
  2. 获取必须写入地址表的数据。调用InsertOnSubmit并调用SubmitChanges
  3. 获取必须写入Car表的数据。调用InsertOnSubmit并调用SubmitChanges
  4. 获取必须写入作业表的数据。调用InsertOnSubmit并调用SubmitChanges

或者

  1. 获取必须写入名称表的数据。
  2. 获取必须写入地址表的数据。
  3. 获取必须写入Car表的数据。
  4. 获取必须写入作业表的数据。
  5. 调用InsertOnSubmit,然后调用SubmitChanges。

或者

  1. 获取必须写入名称表的数据。调用InsertOnSubmit
  2. 获取必须写入地址表的数据。调用InsertOnSubmit
  3. 获取必须写入Car表的数据。调用InsertOnSubmit
  4. 获取必须写入作业表的数据。调用InsertOnSubmit
  5. 致电SubmitChanges

我已经实现了给出的第一个选项,并且我确信这不是最好的方法。我不知道自己的网络连接是否有问题,但是有时某些表被写入而其他表没有写入,这确保了我没有尽力而为。

在与此问题类似的一些帖子中,有一些与“视图”和其他选项有关的评论。我对此没有经验,因此我需要一些指导,以了解实现此目标的最佳方法以及应该将注意力集中在哪个方向。


阅读 277

收藏
2021-05-30

共1个答案

一尘不染

准备第一个表的数据并为该表执行InsertInSubmit

然后对于第二,第三,第四表也是如此。

然后执行SubmitChanges。

在数据库中,所有行都将被插入(如果包括这些操作,则将被更新或删除)。如果在数据库更新期间出了点问题,则所有的修改都将被删除(回滚)。因此,数据完整性是安全的!

程序中变量中的数据将不会反映数据库,如果发生了回滚,则需要再次访问该数据。

第二个变体并不总是能很好地工作,因为它将仅包含回滚中的最后一个表。如果表1的插入顺利进行,则2失败,nr 3和4进行顺利,那么您将不会注意到第二次失败。

2021-05-30