[#79] AppDbContext: Use compiled queries

This commit is contained in:
2026-04-04 15:28:30 +02:00
parent 9c39a2f820
commit d051a2bfcf
42 changed files with 393 additions and 379 deletions

View File

@@ -10,19 +10,19 @@ namespace Tests.UnitTests.ServiceTests {
private static async Task InitViewModel(DeliveryAdminViewModel vm) {
using var ctx = new AppDbContext();
vm.MemberSource = await ctx.Members.ToListAsync();
vm.BranchSource = await ctx.Branches.ToListAsync();
vm.WineVarSource = await ctx.WineVarieties.ToListAsync();
List<object> attrs = (await ctx.WineAttributes.ToListAsync()).Cast<object>().ToList();
vm.MemberSource = await ctx.FetchMembers(includeNotActive: true).ToListAsync();
vm.BranchSource = await ctx.FetchBranches().ToListAsync();
vm.WineVarSource = await ctx.FetchWineVarieties().ToListAsync();
List<object> attrs = await ctx.FetchWineAttributes().Cast<object>().ToListAsync();
attrs.Insert(0, new NullItem());
vm.WineAttrSource = attrs;
List<object> cults = (await ctx.WineCultivations.ToListAsync()).Cast<object>().ToList();
List<object> cults = await ctx.FetchWineCultivations().Cast<object>().ToListAsync();
cults.Insert(0, new NullItem());
vm.WineCultSource = cults;
vm.WineQualityLevelSource = await ctx.WineQualityLevels.ToListAsync();
vm.WineQualityLevelSource = await ctx.FetchWineQualityLevels().ToListAsync();
vm.WineOriginSource = await ctx.WineOrigins.ToListAsync();
vm.WineKgSource = await ctx.Katastralgemeinden.ToListAsync();
vm.ModifiersSource = await ctx.Modifiers.Where(m => m.Year == 2022).ToListAsync();
vm.ModifiersSource = await ctx.FetchModifiers(2022).ToListAsync();
}
private static async Task<Delivery?> GetDelivery(string lsnr) {

View File

@@ -10,7 +10,7 @@ namespace Tests.UnitTests.ServiceTests {
private static async Task InitViewModel(MemberAdminViewModel vm) {
using var ctx = new AppDbContext();
vm.BranchSource = await ctx.Branches.ToListAsync();
vm.BranchSource = await ctx.FetchBranches().ToListAsync();
vm.DefaultKgSource = await ctx.Katastralgemeinden.ToListAsync();
vm.OrtSource = await ctx.PlzDestinations.ToListAsync();
vm.BillingOrtSource = await ctx.PlzDestinations.ToListAsync();
@@ -31,18 +31,14 @@ namespace Tests.UnitTests.ServiceTests {
Assert.That(vm.MgNr, Is.EqualTo(205));
using (var ctx = new AppDbContext()) {
Assert.That(await ctx.Members.FindAsync(205), Is.Null);
Assert.That(await ctx.FetchMembers(205, includeNotActive: true).SingleOrDefaultAsync(), Is.Null);
}
Assert.DoesNotThrowAsync(async () => await vm.UpdateMember(null));
Member m;
using (var ctx = new AppDbContext()) {
m = await ctx.Members
.Where(m => m.MgNr == vm.MgNr)
.Include(m => m.EmailAddresses)
.Include(m => m.TelephoneNumbers)
.SingleAsync();
m = await ctx.FetchMembers(vm.MgNr, includeNotActive: true, includeContactInfo: true).SingleAsync();
}
Assert.That(m, Is.Not.Null);
@@ -115,18 +111,14 @@ namespace Tests.UnitTests.ServiceTests {
vm.IsFunktionär = true;
using (var ctx = new AppDbContext()) {
Assert.That(await ctx.Members.FindAsync(999), Is.Null);
Assert.That(await ctx.FetchMembers(999, includeNotActive: true).SingleOrDefaultAsync(), Is.Null);
}
Assert.DoesNotThrowAsync(async () => await vm.UpdateMember(null));
Member m;
using (var ctx = new AppDbContext()) {
m = await ctx.Members
.Where(m => m.MgNr == vm.MgNr)
.Include(m => m.EmailAddresses)
.Include(m => m.TelephoneNumbers)
.SingleAsync();
m = await ctx.FetchMembers(vm.MgNr, includeNotActive: true, includeContactInfo: true).SingleAsync();
}
Assert.That(m, Is.Not.Null);
@@ -226,11 +218,7 @@ namespace Tests.UnitTests.ServiceTests {
var vm = new MemberAdminViewModel();
await InitViewModel(vm);
using (var ctx = new AppDbContext()) {
vm.FillInputs(await ctx.Members
.Where(m => m.MgNr == 202)
.Include(m => m.EmailAddresses)
.Include(m => m.TelephoneNumbers)
.SingleAsync());
vm.FillInputs(await ctx.FetchMembers(202, includeNotActive: true, includeContactInfo: true).SingleAsync());
}
Assert.That(vm.IsActive, Is.True);
@@ -243,11 +231,7 @@ namespace Tests.UnitTests.ServiceTests {
Member m;
using (var ctx = new AppDbContext()) {
m = await ctx.Members
.Where(m => m.MgNr == 202)
.Include(m => m.EmailAddresses)
.Include(m => m.TelephoneNumbers)
.SingleAsync();
m = await ctx.FetchMembers(202, includeNotActive: true, includeContactInfo: true).SingleAsync();
}
Assert.That(m, Is.Not.Null);
@@ -270,11 +254,7 @@ namespace Tests.UnitTests.ServiceTests {
var vm = new MemberAdminViewModel();
await InitViewModel(vm);
using (var ctx = new AppDbContext()) {
vm.FillInputs(await ctx.Members
.Where(m => m.MgNr == 203)
.Include(m => m.EmailAddresses)
.Include(m => m.TelephoneNumbers)
.SingleAsync());
vm.FillInputs(await ctx.FetchMembers(203, includeNotActive: true, includeContactInfo: true).SingleAsync());
}
Assert.Multiple(() => {
@@ -288,11 +268,7 @@ namespace Tests.UnitTests.ServiceTests {
Member m;
using (var ctx = new AppDbContext()) {
m = await ctx.Members
.Where(m => m.MgNr == 210)
.Include(m => m.EmailAddresses)
.Include(m => m.TelephoneNumbers)
.SingleAsync();
m = await ctx.FetchMembers(210, includeNotActive: true, includeContactInfo: true).SingleAsync();
}
Assert.That(m, Is.Not.Null);
@@ -310,27 +286,27 @@ namespace Tests.UnitTests.ServiceTests {
[Test]
public async Task TestDelete_01_NoReferences() {
using (var ctx = new AppDbContext()) {
Assert.That(await ctx.Members.FindAsync(201), Is.Not.Null);
Assert.That(await ctx.FetchMembers(201, includeNotActive: true).SingleOrDefaultAsync(), Is.Not.Null);
}
Assert.DoesNotThrowAsync(async () => await MemberService.DeleteMember(201, false, false, false));
using (var ctx = new AppDbContext()) {
Assert.That(await ctx.Members.FindAsync(201), Is.Null);
Assert.That(await ctx.FetchMembers(201, includeNotActive: true).SingleOrDefaultAsync(), Is.Null);
}
}
[Test]
public async Task TestDelete_02_AllReferences() {
using (var ctx = new AppDbContext()) {
Assert.That(await ctx.Members.FindAsync(204), Is.Not.Null);
Assert.That(await ctx.FetchMembers(204, includeNotActive: true).SingleOrDefaultAsync(), Is.Not.Null);
}
for (int i = 0; i < 7; i++) {
Assert.ThrowsAsync<DbUpdateException>(async () => await MemberService.DeleteMember(204, (i & 1) != 0, (i & 2) != 0, (i & 4) != 0));
using var ctx = new AppDbContext();
Assert.That(await ctx.Members.FindAsync(204), Is.Not.Null);
Assert.That(await ctx.FetchMembers(204, includeNotActive: true).SingleOrDefaultAsync(), Is.Not.Null);
}
Assert.DoesNotThrowAsync(async () => await MemberService.DeleteMember(204, true, true, true));
using (var ctx = new AppDbContext()) {
Assert.That(await ctx.Members.FindAsync(204), Is.Null);
Assert.That(await ctx.FetchMembers(204, includeNotActive: true).SingleOrDefaultAsync(), Is.Null);
}
}
}