C#,ORM освобождение памяти
кто может помочь, после загрузки из бд
вот DataContext
using (DataContext db = new())
{
var terminal = db.Terminals.Where(x => x.IMEI == imei).Include(x => x.VersionFirtware).FirstOrDefault();
var version = terminal.VersionFirtware.VersionFirtwareTerminal; // версия прошивки
var dataTerminalJournals = db.DataTerminalJournals
.Where(x => x.Terminal.Id == terminal.Id)
.ToList();
var dataTerminalsFromDB = dataTerminalJournals
.OrderByDescending(x => x.Id)
.Take(74)
.ToList();
// changeTerminals.Clear();
// }
}
в память процессора загрузились данные, после выхода из конструкции using , то память не освободилась.
public class DataContext : DbContext
{
GetConnectionString _getConnectionString;
public DbSet<VersionFirtware> VersionFirtwares { get; set; }
public DbSet<Terminal> Terminals { get; set; }
public DbSet<DataTerminalJournal> DataTerminalJournals { get; set; }
public DbSet<SLAVEID> SlaveId { get; set; }
public DbSet<ChangeTerminal> ChangeTerminals { get; set; }
public DbSet<JournalErrors> JournalErrors { get; set; }
public DataContext()
{
_getConnectionString = new GetConnectionString();
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
// optionsBuilder.UseSqlServer("Data Source=WIN-ARCTJA5L0P5\\SQLEXPRESS;Initial Catalog=KratecDBCore;Integrated Security=True");
base.OnConfiguring(optionsBuilder);
var connectionString = _getConnectionString.GetConnectionStrings("KratecConnection");
optionsBuilder.UseSqlServer(connectionString);
}
}
вообщем переделал вот в такой запрос и нормально стало
Stopwatch sp = new();
// dataTerminalJournals = db.DataTerminalJournals
// .Where(x => x.Terminal.Id == terminal.Id)
// .ToList();
sp.Start();
dataTerminalJournals = await db.DataTerminalJournals
.Where(x => x.Terminal.Id == terminal.Id)
.OrderByDescending(x => x.Id)
.Take(74)
.ToListAsync();
sp.Stop();
Debug.WriteLine($"{sp.Elapsed.TotalSeconds}");