内存不足-C#DbDataReader填充列表导致OutOfMemoryException
本文关键字:OutOfMemoryException 列表 -C#DbDataReader 填充 内存不足 | 更新日期: 2023-09-27 17:59:07
我目前正试图从包含大约3-4百万行的紧凑ce数据库中读取一个大表。数据库大小i当前为832MB。用记录填充列表是抛出OutOfMemoryException
实物模型代码:
using (var con = new DomainContext())
{
foreach (var item in con.logRecords)
{
if (item.Info != null && item.Info != "")
item.Timestamp = DateTime.ParseExact(item.Info, "MM.dd.yyyy HH:mm:ss.fff", culture).Ticks;
}
con.SaveChanges();
}
新方法,仍然没有发挥作用。。。。
Task.Factory.StartNew(() =>
{
using (var con = new DomainContext())
{
for (int i = 0; i < 300; i++)
{
try
{
var temp = con.logRecords.Where(p => p.Id <= i * 10000 + 10000 && p.Id >= i * 10000);
foreach (var item in temp)
{
if (item.Info != null && item.Info != "")
item.Timestamp = DateTime.ParseExact(item.Info, "MM.dd.yyyy HH:mm:ss.fff", culture).Ticks;
}
con.SaveChanges();
}
catch { }
GC.Collect();
Console.WriteLine(i.ToString());
}
}
});
我使用本机SQL,将时间戳解析为SQL时间戳,然后使用DATEDIFF(datepart,startdate,enddate)找到自1970年以来的秒数。自0年以来添加的秒数。我失去了毫秒部分,但我想这是下一个最好的东西。