Tôi đang xây dựng một ứng dụng và đang sử dụng Entity Framework 6. Nhưng tôi đang gặp vấn đề với việc sử dụng bộ nhớ. Không có vấn đề gì tôi cố gắng tôi sớm hay muộn chạy vào một lỗi bộ nhớ. Cho đến nay tôi đã thử các cách sau:Entity Framework 6 sử dụng bộ nhớ đạt 2GB
- Sử dụng cho ngữ cảnh.
- Lưu thay đổi theo lô và xử lý ngữ cảnh.
- Gọi thủ công GC.Collect().
Nhưng không cái nào trong số này ngăn khung Entity sử dụng nhiều bộ nhớ hơn với mọi saveChang tôi làm. Cuối cùng đạt tới giới hạn 2GB và làm hỏng chương trình của tôi.
Có cách nào tôi không biết làm cho Khung thực thể phát hành tất cả bộ nhớ không?
Sửa
using (var sqlite = new myEntities())
{
sqlite.Configuration.AutoDetectChangesEnabled = false;
sqlite.Configuration.ValidateOnSaveEnabled = false;
foreach (var someItem in someList)
{
var newItem = new Item
{
...
};
sqlite.tableName.Add(newItem);
if (++countRecords%1000 == 0)
{
sqlite.SaveChanges();
}
}
sqlite.SaveChanges();
}
Như đã trình bày ở trên tôi cũng đã cố gắng thiết lập bối cảnh mà không có việc sử dụng và xử lý nó sau khi SaveChanges.
if (++countRecords%1000 == 0)
{
sqlite.SaveChanges();
sqlite.Dispose();
sqlite = new myEntities()
}
Bạn có tạo phiên bản Ngữ cảnh mới cho từng yêu cầu vào cơ sở dữ liệu không? – Lance
Để được trợ giúp, bạn cần phải tìm ra cách để tạo một chương trình tối thiểu nhưng đầy đủ để tái tạo lại vấn đề bộ nhớ. Nếu không, như bạn chắc chắn có thể hiểu, bất cứ điều gì chúng tôi đề nghị sẽ được đầu cơ thuần túy. – sstan
bạn có thể chia sẻ truy vấn EF của mình không? – Sampath