Out of memory when creating a lot of objects C#

前端 未结 5 1828
醉梦人生
醉梦人生 2020-12-18 21:26

I\'m processing 1 million records in my application, which I retrieve from a MySQL database. To do so I\'m using Linq to get the records and use .Skip() and .Take() to proce

5条回答
  •  独厮守ぢ
    2020-12-18 21:40

    Have you tried declaring the Item outside the loop like this:

    IQueryable objectCollection = dataContext.Repository();
    int amountToSkip = 0;
    IList objects = objectCollection.Skip(amountToSkip).Take(250).ToList();
    Item item = null;
    while (objects.Count != 0)
            {
                using (dataContext = new LinqToSqlContext(new DataContext()))
                {
                    foreach (Object objectRecord in objects)
                    {
                        // Create 0 - 4 Random Items
                        for (int i = 0; i < Random.Next(0, 4); i++)
                        {
                            item = new Item();
                            item.Id = Guid.NewGuid();
                            item.Object = objectRecord.Id;
                            item.Created = DateTime.Now;
                            item.Changed = DateTime.Now;
                            dataContext.InsertOnSubmit(item);
                        }
                    }
                    dataContext.SubmitChanges();
                }
                amountToSkip += 250;
                objects = objectCollection.Skip(amountToSkip).Take(250).ToList();
            }
    
        

    提交回复
    热议问题