gpt4 book ai didi

c# - Context.SubmitChanges 与 TransactionScope.Submit 内存消耗

转载 作者:太空宇宙 更新时间:2023-11-03 13:03:54 24 4
gpt4 key购买 nike

关于这两种方法,我想知道的是它们如何处理内存,以及哪种方法更适合我的情况。

现在我需要重新生成表(每个表大约 1.5 GB),我的第一个解决方案是使用来自源的新数据(在我的场景中是一个网络服务),所以我打开新的数据库上下文,删除旧表(in the context) ,我将新数据放入上下文,将更改提交到上下文(因此只有在没有错误的情况下更改才会生效)。

我所看到的是,以这种方式进行内存消耗成为一个问题,似乎数据一直保留在内存中,直到我提交更改(使用创建的上下文)。

所以我的想法是使用 block (并且每个 block 都使用上述相同的逻辑对少量数据进行操作),但是如果使用的任何 block 的操作失败,我需要回滚,所以我假设我需要一个 TransactionScope。我现在想知道的是,TransactionScope 是否在内存中工作直到像上下文一样提交,或者是否使用一些日志记录技术以便它可以回滚每一步(但每一步都不会保留在内存中)。

最佳答案

数据保留在内存中,因为实体附加到它们的上下文。 L2S 不支持分离实体,因此这不是可行的策略。

更好的解决方案:考虑打开一个数据库连接、一个 TransactionScope 并每批创建一个 L2S 上下文。您可以为上下文构造函数提供一个现有连接。这样内存使用量是恒定的,您可以使用事务。

关于c# - Context.SubmitChanges 与 TransactionScope.Submit 内存消耗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31434540/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com