我已经阅读了一些与我的问题有关的帖子,但不要认为他们以我能理解的方式回答它。我对Linq一般都是SQL和SQL的新手,所以请光临我。
我的问题是这样的。
如果我需要使用一个“操作”更新或插入多个表,例如调用保存信息,其中有多个表包含“信息”。
为了论证,我们假设我们有以下表格:
名称 地址 汽车 工作
并且每次调用保存信息时,都会插入这些表中的每一个。
哪个更好:
或
或
我已经实施了第一个选项,我相信这不是最佳选择。我不知道我的网络连接是否有问题或其他问题,但有时会写入一些表而其他表没有写入,这使我确信我没有尽可能做到这一点。
在一些与此问题类似的帖子中,有关于视图和其他选项的注释。我没有这方面的经验,所以我需要一些指导,以便最好地做到这一点以及我应该关注哪个方向。
答案 0 :(得分:2)
准备第一个表的数据并为表
执行InsertOnSubmit然后第2,第3,第4表格相同。
然后执行SubmitChanges。
在数据库中,所有行都将被插入(或者如果包含这些操作,则更新或删除)。如果在更新数据库期间出现问题,将删除所有修改(回滚)。因此,数据的完整性是安全的!
程序中变量中的数据不会反映数据库,如果发生回滚,则需要再次访问数据。
第二个变体并不总是运行良好,因为它只包含回滚中的最后一个表。如果表1的插入顺利,没有2失败,3和4顺利,那么你将不会注意到第二次失败。
答案 1 :(得分:1)
首先,您应该只在一切就绪后提交/提交更改,特别是如果更改都属于单个“操作”。否则,有可能(正如您正在经历的那样)某些表可能会更新,而其他表则不会更新,例如,如果在后续提交之前发生错误,或者发生中止。
我会推荐第二个或第三个选项,我自己,这取决于“获取数据”操作的复杂程度,以及它使用了多少内存。如果它相对简单,我会选择第二个选项:预先获取所有数据,然后将其全部添加并一举提交。但老实说,我怀疑它真的很重要,只要你只在整个操作完成并提交时才提交。