我有两个表:Foo
和Bar
。对于Foo
中的每一行,我现在想在Bar
中添加一行,该行引用相应的Foo
记录。 Foo
可能包含数百万条记录。
通常这个答案是完美的:linq to sql - loop through table data and set value。但正如它在锡上所说,使用以下线对于大型桌子并不是特别理想。
List<User> users = dc.Users.ToList();
由于在List<>
中缓存整个表格不起作用,我还有其他选择吗?例如,是否有一种优雅的方式来“翻阅”记录?由于我很确定这是一个相对常见的问题,我认为这也是最好的做法。然而,我无法找到它。
答案 0 :(得分:3)
你谈论数百万行数据,然后Linq不是你的朋友。
考虑使用存储过程,或者,如果您愿意,请DbContext.ExecuteCommand
。
两者都将带来巨大的性能提升。
答案 1 :(得分:1)
您可以使用.Skip()
和.Take()
方法处理预定义的批次。另一件需要考虑的事情是使用触发器,这样你根本不需要担心第二个表。