Skip to content

Commit fe1ab49

Browse files
authored
fix: reduce ef dbcontext lifetime to short as possible (#21)
No more long lived dbContext.
1 parent dbb721f commit fe1ab49

File tree

1 file changed

+14
-12
lines changed

1 file changed

+14
-12
lines changed

SharpFM.App/ViewModels/MainWindowViewModel.cs

+14-12
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@ public partial class MainWindowViewModel : INotifyPropertyChanged
1717
{
1818
private readonly ILogger _logger;
1919

20-
public readonly ClipDbContext _context;
21-
2220
public event PropertyChangedEventHandler? PropertyChanged;
2321

2422
private void NotifyPropertyChanged([CallerMemberName] string propertyName = "")
@@ -30,14 +28,14 @@ public MainWindowViewModel(ILogger logger)
3028
{
3129
_logger = logger;
3230

33-
_context = new ClipDbContext();
34-
_context.Database.EnsureCreated();
31+
using var clipContext = new ClipDbContext();
32+
clipContext.Database.EnsureCreated();
3533

36-
_logger.LogInformation($"Database path: {_context.DbPath}.");
34+
_logger.LogInformation($"Database path: {clipContext.DbPath}.");
3735

3836
FileMakerClips = new ObservableCollection<ClipViewModel>();
3937

40-
foreach (var clip in _context.Clips)
38+
foreach (var clip in clipContext.Clips)
4139
{
4240
FileMakerClips.Add(new ClipViewModel(
4341
new FileMakerClip(
@@ -53,7 +51,9 @@ public MainWindowViewModel(ILogger logger)
5351

5452
public void SaveToDb()
5553
{
56-
var dbClips = _context.Clips.ToList();
54+
using var clipContext = new ClipDbContext();
55+
56+
var dbClips = clipContext.Clips.ToList();
5757

5858
foreach (var clip in FileMakerClips)
5959
{
@@ -66,7 +66,7 @@ public void SaveToDb()
6666
}
6767
else
6868
{
69-
_context.Clips.Add(new Clip()
69+
clipContext.Clips.Add(new Clip()
7070
{
7171
ClipName = clip.Name,
7272
ClipType = clip.ClipType,
@@ -75,19 +75,21 @@ public void SaveToDb()
7575
}
7676
}
7777

78-
_context.SaveChanges();
78+
clipContext.SaveChanges();
7979
}
8080

8181
public void ClearDb()
8282
{
83-
var clips = _context.Clips.ToList();
83+
using var clipContext = new ClipDbContext();
84+
85+
var clips = clipContext.Clips.ToList();
8486

8587
foreach (var clip in clips)
8688
{
87-
_context.Clips.Remove(clip);
89+
clipContext.Clips.Remove(clip);
8890
}
8991

90-
_context.SaveChanges();
92+
clipContext.SaveChanges();
9193
}
9294

9395
public void ExitApplication()

0 commit comments

Comments
 (0)