diff --git a/EntityFrameworkCore.Data/Migrations/20250407092002_AddOneToOneRelationshipCoachTeam.Designer.cs b/EntityFrameworkCore.Data/Migrations/20250407092002_AddOneToOneRelationshipCoachTeam.Designer.cs
new file mode 100644
index 0000000..8834c7c
--- /dev/null
+++ b/EntityFrameworkCore.Data/Migrations/20250407092002_AddOneToOneRelationshipCoachTeam.Designer.cs
@@ -0,0 +1,368 @@
+//
+using System;
+using EntityFrameworkCore.Data;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+
+#nullable disable
+
+namespace EntityFrameworkCore.Data.Migrations
+{
+ [DbContext(typeof(DeadBallZoneLeagueDbContext))]
+ [Migration("20250407092002_AddOneToOneRelationshipCoachTeam")]
+ partial class AddOneToOneRelationshipCoachTeam
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder.HasAnnotation("ProductVersion", "9.0.3");
+
+ modelBuilder.Entity("EntityFrameworkCore.Domain.Coach", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("CreatedBy")
+ .HasColumnType("TEXT");
+
+ b.Property("CreatedDate")
+ .HasColumnType("TEXT");
+
+ b.Property("ModifiedBy")
+ .HasColumnType("TEXT");
+
+ b.Property("ModifiedDate")
+ .HasColumnType("TEXT");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.ToTable("Coaches");
+ });
+
+ modelBuilder.Entity("EntityFrameworkCore.Domain.League", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("CreatedBy")
+ .HasColumnType("TEXT");
+
+ b.Property("CreatedDate")
+ .HasColumnType("TEXT");
+
+ b.Property("ModifiedBy")
+ .HasColumnType("TEXT");
+
+ b.Property("ModifiedDate")
+ .HasColumnType("TEXT");
+
+ b.Property("Name")
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.ToTable("Leagues");
+
+ b.HasData(
+ new
+ {
+ Id = 1,
+ CreatedDate = new DateTime(2025, 4, 6, 17, 7, 27, 33, DateTimeKind.Unspecified),
+ ModifiedDate = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified),
+ Name = "Local League"
+ },
+ new
+ {
+ Id = 2,
+ CreatedDate = new DateTime(2025, 4, 6, 17, 7, 27, 33, DateTimeKind.Unspecified),
+ ModifiedDate = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified),
+ Name = "National League"
+ },
+ new
+ {
+ Id = 3,
+ CreatedDate = new DateTime(2025, 4, 6, 17, 7, 27, 33, DateTimeKind.Unspecified),
+ ModifiedDate = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified),
+ Name = "Geosphere"
+ },
+ new
+ {
+ Id = 4,
+ CreatedDate = new DateTime(2025, 4, 6, 17, 7, 27, 33, DateTimeKind.Unspecified),
+ ModifiedDate = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified),
+ Name = "Cyber war"
+ });
+ });
+
+ modelBuilder.Entity("EntityFrameworkCore.Domain.Match", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("AwayTeamId")
+ .HasColumnType("INTEGER");
+
+ b.Property("AwayTeamScore")
+ .HasColumnType("INTEGER");
+
+ b.Property("CreatedBy")
+ .HasColumnType("TEXT");
+
+ b.Property("CreatedDate")
+ .HasColumnType("TEXT");
+
+ b.Property("Date")
+ .HasColumnType("TEXT");
+
+ b.Property("HomeTeamId")
+ .HasColumnType("INTEGER");
+
+ b.Property("HomeTeamScore")
+ .HasColumnType("INTEGER");
+
+ b.Property("ModifiedBy")
+ .HasColumnType("TEXT");
+
+ b.Property("ModifiedDate")
+ .HasColumnType("TEXT");
+
+ b.Property("TicketPrice")
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.HasIndex("AwayTeamId");
+
+ b.HasIndex("HomeTeamId");
+
+ b.ToTable("Matches");
+ });
+
+ modelBuilder.Entity("EntityFrameworkCore.Domain.Team", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("CoachId")
+ .HasColumnType("INTEGER");
+
+ b.Property("CreatedBy")
+ .HasColumnType("TEXT");
+
+ b.Property("CreatedDate")
+ .HasColumnType("TEXT");
+
+ b.Property("LeagueId")
+ .HasColumnType("INTEGER");
+
+ b.Property("ModifiedBy")
+ .HasColumnType("TEXT");
+
+ b.Property("ModifiedDate")
+ .HasColumnType("TEXT");
+
+ b.Property("Name")
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CoachId")
+ .IsUnique();
+
+ b.HasIndex("LeagueId");
+
+ b.HasIndex("Name")
+ .IsUnique();
+
+ b.ToTable("Teams");
+
+ b.HasData(
+ new
+ {
+ Id = 1,
+ CoachId = 0,
+ CreatedDate = new DateTime(2025, 4, 4, 17, 7, 27, 33, DateTimeKind.Unspecified),
+ ModifiedDate = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified),
+ Name = "Neo Delhi"
+ },
+ new
+ {
+ Id = 2,
+ CoachId = 0,
+ CreatedDate = new DateTime(2025, 4, 4, 17, 7, 27, 33, DateTimeKind.Unspecified),
+ ModifiedDate = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified),
+ Name = "Voodoo"
+ },
+ new
+ {
+ Id = 3,
+ CoachId = 0,
+ CreatedDate = new DateTime(2025, 4, 4, 17, 7, 27, 33, DateTimeKind.Unspecified),
+ ModifiedDate = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified),
+ Name = "Penal X"
+ },
+ new
+ {
+ Id = 4,
+ CoachId = 0,
+ CreatedDate = new DateTime(2025, 4, 4, 17, 7, 27, 33, DateTimeKind.Unspecified),
+ ModifiedDate = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified),
+ Name = "Neo Tokyo"
+ },
+ new
+ {
+ Id = 5,
+ CoachId = 0,
+ CreatedDate = new DateTime(2025, 4, 4, 17, 7, 27, 33, DateTimeKind.Unspecified),
+ ModifiedDate = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified),
+ Name = "Neo Barcelona"
+ },
+ new
+ {
+ Id = 6,
+ CoachId = 0,
+ CreatedDate = new DateTime(2025, 4, 4, 17, 7, 27, 33, DateTimeKind.Unspecified),
+ ModifiedDate = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified),
+ Name = "Neo Manchester"
+ },
+ new
+ {
+ Id = 7,
+ CoachId = 0,
+ CreatedDate = new DateTime(2025, 4, 4, 17, 7, 27, 33, DateTimeKind.Unspecified),
+ ModifiedDate = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified),
+ Name = "Neo Bangkok"
+ },
+ new
+ {
+ Id = 8,
+ CoachId = 0,
+ CreatedDate = new DateTime(2025, 4, 4, 17, 7, 27, 33, DateTimeKind.Unspecified),
+ ModifiedDate = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified),
+ Name = "Neo Amsterdam"
+ },
+ new
+ {
+ Id = 9,
+ CoachId = 0,
+ CreatedDate = new DateTime(2025, 4, 4, 17, 7, 27, 33, DateTimeKind.Unspecified),
+ ModifiedDate = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified),
+ Name = "Killaklowns"
+ },
+ new
+ {
+ Id = 10,
+ CoachId = 0,
+ CreatedDate = new DateTime(2025, 4, 4, 17, 7, 27, 33, DateTimeKind.Unspecified),
+ ModifiedDate = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified),
+ Name = "Sol"
+ },
+ new
+ {
+ Id = 11,
+ CoachId = 0,
+ CreatedDate = new DateTime(2025, 4, 4, 17, 7, 27, 33, DateTimeKind.Unspecified),
+ ModifiedDate = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified),
+ Name = "DEC"
+ },
+ new
+ {
+ Id = 12,
+ CoachId = 0,
+ CreatedDate = new DateTime(2025, 4, 4, 17, 7, 27, 33, DateTimeKind.Unspecified),
+ ModifiedDate = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified),
+ Name = "Leopards"
+ },
+ new
+ {
+ Id = 13,
+ CoachId = 0,
+ CreatedDate = new DateTime(2025, 4, 4, 17, 7, 27, 33, DateTimeKind.Unspecified),
+ ModifiedDate = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified),
+ Name = "Harlequins"
+ },
+ new
+ {
+ Id = 14,
+ CoachId = 0,
+ CreatedDate = new DateTime(2025, 4, 4, 17, 7, 27, 33, DateTimeKind.Unspecified),
+ ModifiedDate = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified),
+ Name = "Gladiators"
+ },
+ new
+ {
+ Id = 15,
+ CoachId = 0,
+ CreatedDate = new DateTime(2025, 4, 4, 17, 7, 27, 33, DateTimeKind.Unspecified),
+ ModifiedDate = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified),
+ Name = "Fiz-O"
+ });
+ });
+
+ modelBuilder.Entity("EntityFrameworkCore.Domain.Match", b =>
+ {
+ b.HasOne("EntityFrameworkCore.Domain.Team", "AwayTeam")
+ .WithMany("AwayMatches")
+ .HasForeignKey("AwayTeamId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.HasOne("EntityFrameworkCore.Domain.Team", "HomeTeam")
+ .WithMany("HomeMatches")
+ .HasForeignKey("HomeTeamId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.Navigation("AwayTeam");
+
+ b.Navigation("HomeTeam");
+ });
+
+ modelBuilder.Entity("EntityFrameworkCore.Domain.Team", b =>
+ {
+ b.HasOne("EntityFrameworkCore.Domain.Coach", "Coach")
+ .WithOne("Team")
+ .HasForeignKey("EntityFrameworkCore.Domain.Team", "CoachId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("EntityFrameworkCore.Domain.League", "League")
+ .WithMany("Teams")
+ .HasForeignKey("LeagueId");
+
+ b.Navigation("Coach");
+
+ b.Navigation("League");
+ });
+
+ modelBuilder.Entity("EntityFrameworkCore.Domain.Coach", b =>
+ {
+ b.Navigation("Team");
+ });
+
+ modelBuilder.Entity("EntityFrameworkCore.Domain.League", b =>
+ {
+ b.Navigation("Teams");
+ });
+
+ modelBuilder.Entity("EntityFrameworkCore.Domain.Team", b =>
+ {
+ b.Navigation("AwayMatches");
+
+ b.Navigation("HomeMatches");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/EntityFrameworkCore.Data/Migrations/20250407092002_AddOneToOneRelationshipCoachTeam.cs b/EntityFrameworkCore.Data/Migrations/20250407092002_AddOneToOneRelationshipCoachTeam.cs
new file mode 100644
index 0000000..4185328
--- /dev/null
+++ b/EntityFrameworkCore.Data/Migrations/20250407092002_AddOneToOneRelationshipCoachTeam.cs
@@ -0,0 +1,50 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace EntityFrameworkCore.Data.Migrations
+{
+ ///
+ public partial class AddOneToOneRelationshipCoachTeam : Migration
+ {
+ ///
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.DropColumn(
+ name: "TeamId",
+ table: "Coaches");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Teams_CoachId",
+ table: "Teams",
+ column: "CoachId",
+ unique: true);
+
+ migrationBuilder.AddForeignKey(
+ name: "FK_Teams_Coaches_CoachId",
+ table: "Teams",
+ column: "CoachId",
+ principalTable: "Coaches",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ }
+
+ ///
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.DropForeignKey(
+ name: "FK_Teams_Coaches_CoachId",
+ table: "Teams");
+
+ migrationBuilder.DropIndex(
+ name: "IX_Teams_CoachId",
+ table: "Teams");
+
+ migrationBuilder.AddColumn(
+ name: "TeamId",
+ table: "Coaches",
+ type: "INTEGER",
+ nullable: true);
+ }
+ }
+}
diff --git a/EntityFrameworkCore.Data/Migrations/DeadBallZoneLeagueDbContextModelSnapshot.cs b/EntityFrameworkCore.Data/Migrations/DeadBallZoneLeagueDbContextModelSnapshot.cs
index b9735ee..feb1316 100644
--- a/EntityFrameworkCore.Data/Migrations/DeadBallZoneLeagueDbContextModelSnapshot.cs
+++ b/EntityFrameworkCore.Data/Migrations/DeadBallZoneLeagueDbContextModelSnapshot.cs
@@ -39,9 +39,6 @@ namespace EntityFrameworkCore.Data.Migrations
.IsRequired()
.HasColumnType("TEXT");
- b.Property("TeamId")
- .HasColumnType("INTEGER");
-
b.HasKey("Id");
b.ToTable("Coaches");
@@ -177,6 +174,9 @@ namespace EntityFrameworkCore.Data.Migrations
b.HasKey("Id");
+ b.HasIndex("CoachId")
+ .IsUnique();
+
b.HasIndex("LeagueId");
b.HasIndex("Name")
@@ -328,13 +328,26 @@ namespace EntityFrameworkCore.Data.Migrations
modelBuilder.Entity("EntityFrameworkCore.Domain.Team", b =>
{
+ b.HasOne("EntityFrameworkCore.Domain.Coach", "Coach")
+ .WithOne("Team")
+ .HasForeignKey("EntityFrameworkCore.Domain.Team", "CoachId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
b.HasOne("EntityFrameworkCore.Domain.League", "League")
.WithMany("Teams")
.HasForeignKey("LeagueId");
+ b.Navigation("Coach");
+
b.Navigation("League");
});
+ modelBuilder.Entity("EntityFrameworkCore.Domain.Coach", b =>
+ {
+ b.Navigation("Team");
+ });
+
modelBuilder.Entity("EntityFrameworkCore.Domain.League", b =>
{
b.Navigation("Teams");