From ba3c65d7a15b6e15c825b8dd3a2423099e36fdaa Mon Sep 17 00:00:00 2001 From: Kevin Matsubara Date: Sun, 6 Apr 2025 11:27:13 +0200 Subject: [PATCH] Move Id to BaseDomainModel and replace TeamId with regular Id. --- EntityFrameworkCore.Console/Program.cs | 24 +++++++-------- .../DeadBallZoneLeagueDbContext.cs | 30 +++++++++---------- EntityFrameworkCore.Domain/BaseDomainModel.cs | 1 + EntityFrameworkCore.Domain/Coach.cs | 1 - EntityFrameworkCore.Domain/Team.cs | 1 - 5 files changed, 28 insertions(+), 29 deletions(-) diff --git a/EntityFrameworkCore.Console/Program.cs b/EntityFrameworkCore.Console/Program.cs index a904205..5df3873 100644 --- a/EntityFrameworkCore.Console/Program.cs +++ b/EntityFrameworkCore.Console/Program.cs @@ -4,10 +4,10 @@ using Microsoft.EntityFrameworkCore; using var context = new DeadBallZoneLeagueDbContext(); -// var teamOne = await context.Teams.FirstAsync(t => t.TeamId == 1); -// var teamTwo = await context.Teams.FirstAsync(t => t.TeamId == 2); -// var teamThree = await context.Teams.SingleAsync(t => t.TeamId == 3); -// var teamFour = await context.Teams.SingleOrDefaultAsync(t => t.TeamId == 3); +// var teamOne = await context.Teams.FirstAsync(t => t.Id == 1); +// var teamTwo = await context.Teams.FirstAsync(t => t.Id == 2); +// var teamThree = await context.Teams.SingleAsync(t => t.Id == 3); +// var teamFour = await context.Teams.SingleOrDefaultAsync(t => t.Id == 3); // There is no entry for coaches yet, this function will provide a null to coach. // Rather than raise: "System.InvalidOperationException: Sequence contains no elements." @@ -86,7 +86,7 @@ async Task ListVSIQueryableCall() teamsAsList = await context.Teams.ToListAsync(); if (option == 1) { - teamsAsList = teamsAsList.Where(t => t.TeamId == 1).ToList(); + teamsAsList = teamsAsList.Where(t => t.Id == 1).ToList(); } else if (option == 2) { @@ -101,7 +101,7 @@ async Task ListVSIQueryableCall() var teamsAsQueryable = context.Teams.AsQueryable(); if (option == 1) { - teamsAsQueryable = teamsAsQueryable.Where(t => t.TeamId == 1); + teamsAsQueryable = teamsAsQueryable.Where(t => t.Id == 1); } else if (option == 2) { @@ -170,7 +170,7 @@ async Task GroupedTeams() foreach (var groupedTeam in groupedTeams) { Console.WriteLine(groupedTeam.Key); - Console.WriteLine(groupedTeam.Sum(t => t.TeamId)); + Console.WriteLine(groupedTeam.Sum(t => t.Id)); foreach (var team in groupedTeam) { Console.WriteLine(team.Name); @@ -180,19 +180,19 @@ async Task GroupedTeams() async Task CountFunctionsTeams(int id) { - var numberOfTeams = await context.Teams.CountAsync(t => t.TeamId > id); + var numberOfTeams = await context.Teams.CountAsync(t => t.Id > id); Console.WriteLine($"Number of teams with ID > {id}: {numberOfTeams}"); - var maxTeams = await context.Teams.MaxAsync(t => t.TeamId); + var maxTeams = await context.Teams.MaxAsync(t => t.Id); Console.WriteLine($"Max teams: {maxTeams}"); - var minTeams = await context.Teams.MinAsync(t => t.TeamId); + var minTeams = await context.Teams.MinAsync(t => t.Id); Console.WriteLine($"Min teams: {minTeams}"); - var averageTeams = await context.Teams.AverageAsync(t => t.TeamId); + var averageTeams = await context.Teams.AverageAsync(t => t.Id); Console.WriteLine($"Average teams: {averageTeams}"); - var sumTeams = await context.Teams.SumAsync(t => t.TeamId); + var sumTeams = await context.Teams.SumAsync(t => t.Id); Console.WriteLine($"Sum team IDs: {sumTeams}"); } diff --git a/EntityFrameworkCore.Data/DeadBallZoneLeagueDbContext.cs b/EntityFrameworkCore.Data/DeadBallZoneLeagueDbContext.cs index b7d3a0c..a5b289c 100644 --- a/EntityFrameworkCore.Data/DeadBallZoneLeagueDbContext.cs +++ b/EntityFrameworkCore.Data/DeadBallZoneLeagueDbContext.cs @@ -31,21 +31,21 @@ public class DeadBallZoneLeagueDbContext : DbContext { modelBuilder.Entity().HasData( // Use hardcoded dates, not dynamic data such as new DateTimeOffset.UtcNow.DateTime for seeding. - new Team { TeamId = 1, Name = "Neo Delhi", CreatedDate = new DateTime(2025, 4, 4, 17, 7, 27, 33)}, - new Team { TeamId = 2, Name = "Voodoo", CreatedDate = new DateTime(2025, 4, 4, 17, 7, 27, 33) }, - new Team { TeamId = 3, Name = "Penal X", CreatedDate = new DateTime(2025, 4, 4, 17, 7, 27, 33) }, - new Team { TeamId = 4, Name = "Neo Tokyo", CreatedDate = new DateTime(2025, 4, 4, 17, 7, 27, 33) }, - new Team { TeamId = 5, Name = "Neo Barcelona", CreatedDate = new DateTime(2025, 4, 4, 17, 7, 27, 33) }, - new Team { TeamId = 6, Name = "Neo Manchester", CreatedDate = new DateTime(2025, 4, 4, 17, 7, 27, 33) }, - new Team { TeamId = 7, Name = "Neo Bangkok", CreatedDate = new DateTime(2025, 4, 4, 17, 7, 27, 33) }, - new Team { TeamId = 8, Name = "Neo Amsterdam", CreatedDate = new DateTime(2025, 4, 4, 17, 7, 27, 33) }, - new Team { TeamId = 9, Name = "Killaklowns", CreatedDate = new DateTime(2025, 4, 4, 17, 7, 27, 33) }, - new Team { TeamId = 10, Name = "Sol", CreatedDate = new DateTime(2025, 4, 4, 17, 7, 27, 33) }, - new Team { TeamId = 11, Name = "DEC", CreatedDate = new DateTime(2025, 4, 4, 17, 7, 27, 33) }, - new Team { TeamId = 12, Name = "Leopards", CreatedDate = new DateTime(2025, 4, 4, 17, 7, 27, 33) }, - new Team { TeamId = 13, Name = "Harlequins", CreatedDate = new DateTime(2025, 4, 4, 17, 7, 27, 33) }, - new Team { TeamId = 14, Name = "Gladiators", CreatedDate = new DateTime(2025, 4, 4, 17, 7, 27, 33) }, - new Team { TeamId = 15, Name = "Fiz-O", CreatedDate = new DateTime(2025, 4, 4, 17, 7, 27, 33) } + new Team { Id = 1, Name = "Neo Delhi", CreatedDate = new DateTime(2025, 4, 4, 17, 7, 27, 33)}, + new Team { Id = 2, Name = "Voodoo", CreatedDate = new DateTime(2025, 4, 4, 17, 7, 27, 33) }, + new Team { Id = 3, Name = "Penal X", CreatedDate = new DateTime(2025, 4, 4, 17, 7, 27, 33) }, + new Team { Id = 4, Name = "Neo Tokyo", CreatedDate = new DateTime(2025, 4, 4, 17, 7, 27, 33) }, + new Team { Id = 5, Name = "Neo Barcelona", CreatedDate = new DateTime(2025, 4, 4, 17, 7, 27, 33) }, + new Team { Id = 6, Name = "Neo Manchester", CreatedDate = new DateTime(2025, 4, 4, 17, 7, 27, 33) }, + new Team { Id = 7, Name = "Neo Bangkok", CreatedDate = new DateTime(2025, 4, 4, 17, 7, 27, 33) }, + new Team { Id = 8, Name = "Neo Amsterdam", CreatedDate = new DateTime(2025, 4, 4, 17, 7, 27, 33) }, + new Team { Id = 9, Name = "Killaklowns", CreatedDate = new DateTime(2025, 4, 4, 17, 7, 27, 33) }, + new Team { Id = 10, Name = "Sol", CreatedDate = new DateTime(2025, 4, 4, 17, 7, 27, 33) }, + new Team { Id = 11, Name = "DEC", CreatedDate = new DateTime(2025, 4, 4, 17, 7, 27, 33) }, + new Team { Id = 12, Name = "Leopards", CreatedDate = new DateTime(2025, 4, 4, 17, 7, 27, 33) }, + new Team { Id = 13, Name = "Harlequins", CreatedDate = new DateTime(2025, 4, 4, 17, 7, 27, 33) }, + new Team { Id = 14, Name = "Gladiators", CreatedDate = new DateTime(2025, 4, 4, 17, 7, 27, 33) }, + new Team { Id = 15, Name = "Fiz-O", CreatedDate = new DateTime(2025, 4, 4, 17, 7, 27, 33) } ); } } diff --git a/EntityFrameworkCore.Domain/BaseDomainModel.cs b/EntityFrameworkCore.Domain/BaseDomainModel.cs index 3715b8c..a107fe2 100644 --- a/EntityFrameworkCore.Domain/BaseDomainModel.cs +++ b/EntityFrameworkCore.Domain/BaseDomainModel.cs @@ -2,5 +2,6 @@ // Since C#11, you do not need to wrap in accolades anymore. public abstract class BaseDomainModel { + public int Id { get; set; } // Anything called "Id" is automatically a Primary Key. public DateTime CreatedDate { get; set;} } diff --git a/EntityFrameworkCore.Domain/Coach.cs b/EntityFrameworkCore.Domain/Coach.cs index 6ad7072..f95e32e 100644 --- a/EntityFrameworkCore.Domain/Coach.cs +++ b/EntityFrameworkCore.Domain/Coach.cs @@ -2,7 +2,6 @@ // Since C#11, you do not need to wrap in accolades anymore. public class Coach : BaseDomainModel { - public int Id { get; set; } // Anything called "Id" is automatically a Primary Key. public string Name { get; set; } // Strings are automatically become VARCHAR database types. } diff --git a/EntityFrameworkCore.Domain/Team.cs b/EntityFrameworkCore.Domain/Team.cs index 00dc1a3..0ff4d58 100644 --- a/EntityFrameworkCore.Domain/Team.cs +++ b/EntityFrameworkCore.Domain/Team.cs @@ -2,6 +2,5 @@ // Since C#11, you do not need to wrap in accolades anymore. public class Team : BaseDomainModel { - public int TeamId { get; set;} // This naming convention also allows EF to see this as a PK. public string? Name { get; set; } }