gpt4 book ai didi

c# - 我可以通过 Linq to Sql 中的 InserAllOnSubmit() 插入的最大记录数是多少

转载 作者:太空狗 更新时间:2023-10-29 22:26:52 25 4
gpt4 key购买 nike

我正在阅读 Excel 工作表并应用我的业务逻辑,我正在尝试使用 Linq to SQL 插入.

在我的循环中我有 > (greater than) 5,000 records< (Less than) 15,000 records插入。

public List<tblLog> tblLogList = new List<tblLog>(); 

这个方法在循环中:

public void SaveLog()
{
tblLog tnlog = new tblLog();
tnlog.id = Guid.NewGuid();
tnlog.comp_id = Comp_id;
tnlog.branch_id = Branch_id;
tnlog.row_id = rowID;
tnlog.his_id = his_id;

//Add records to List
tblLogList.Add(tnlog);

之前我试过这个代码一个一个提交:

    //_trContext.tblLogs.InsertOnSubmit(tblLog);
//_trContext.SubmitChanges();

由于性能下降,我已经更改了 InsertOnSubmitInsertAllOnSubmit

    if (tblLogList.Count >= 1000)
{
_trContext.tblLogs.InsertAllOnSubmit(tblLogList);
_trContext.SubmitChanges();
tblLogList.Clear();
}
}

我的问题是:

  1. 在 Linq to Sql 中,我可以通过 InserAllOnSubmit() 插入的最大记录数是多少。

  2. 通过我上面的代码,我获得了多达 1000 条记录,但我发誓,当代码用于 10,000 条或更多记录时,它可能会通过一些 Timeout Exception自从它在我的 **windows service** 中实现以来.

    我真的很困惑,处理上述逻辑的最佳建议是什么?

提前致谢。

最佳答案

虽然其他人正确地陈述了这项任务有更好的解决方案,但尚未给出对您问题的直接答案。

答案是,技术上数量要么受限于上下文通过吞噬所有这些新对象所消耗的内存量,要么受限于数据库事务日志的最大大小。前者更有可能成为瓶颈,但您可以通过以数百或数千 block 的形式提交记录并为每个批处理使用新的上下文 (!) 来防止达到这两个限制。 p>

如您所说,实际 限制可以是命令超时(如果您不想使其永久化)。这也可以通过分批提交来规避,从而为每个批处理启动一个新命令。

功能 限制取决于诸如过程是否无人值守(耐心)以及数据是否预期在特定时间内可用等因素。如果这些要求很严格,您可能不得不求助于其他答案中建议的解决方案之一。

关于c# - 我可以通过 Linq to Sql 中的 InserAllOnSubmit() 插入的最大记录数是多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17218379/

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