Merge pull request 'EF002' (#39) from EF002 into master
continuous-integration/drone/push Build is passing Details

Reviewed-on: #39
pull/43/head
Victor Perez NGOUNOU 3 years ago
commit 0baed71251

2
.gitignore vendored

@ -426,3 +426,5 @@ Network Trash Folder
Temporary Items
.apdisk
/Sources/BowlingApp/bowling.db-shm
/Sources/BowlingApp/bowling.db-wal

@ -4,8 +4,16 @@
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="6.0.10">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\BowlingEF\BowlingEF.csproj" />
<ProjectReference Include="..\BowlingLib\BowlingLib.csproj" />
</ItemGroup>
</Project>

Binary file not shown.

@ -6,4 +6,13 @@
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.10" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="6.0.10" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.10">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
</Project>

@ -1,7 +0,0 @@
namespace BowlingEF
{
public class Class1
{
}
}

@ -0,0 +1,24 @@
using BowlingEF.Entities;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BowlingEF.Context
{
public class BowlingContext : DbContext
{
public DbSet<JoueurEntity> Joueurs { get; set; }
public DbSet<EquipeEntity> Equipes { get; set; }
public DbSet<PartieEntity> Parties { get; set; }
public DbSet<FrameEntity> Frames { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlite("Data Source=bowling.db");
}
}
}

@ -6,12 +6,14 @@ using System.Threading.Tasks;
namespace BowlingEF.Entities
{
//classe EquipeEntity représentant la table Equipe de la base de données
/// <summary>
/// Classe de gestion des equipes
/// </summary>
public class EquipeEntity
{
public long Id { get; set; }
public string Nom { get; set; }
public List<JoueurEntity> Joueurs { get; set; }
public ICollection<JoueurEntity> Joueurs { get; set; }
public EquipeEntity()
{
Joueurs = new List<JoueurEntity>();

@ -0,0 +1,27 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace BowlingEF.Entities
{
/// <summary>
/// Classe de gestion des frames
/// </summary>
public class FrameEntity
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long Id { get; set; }
[Required]
public int Numero { get; set; }
[Required]
public int Lancer1 { get; set; }
[Required]
public int Lancer2 { get; set; }
public int Lancer3 { get; set; }
[Required]
public bool IsStrike { get; set; }
[Required]
public bool IsSpare { get; set; }
public PartieEntity Partie { get; set; }
}
}

@ -1,6 +1,18 @@
namespace BowlingEF.Entities
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace BowlingEF.Entities
{
/// <summary>
/// Classe de gestion des Joueurs
/// </summary>
public class JoueurEntity
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long Id { get; set; }
[Required]
public string Pseudo { get; set; }
}
}

@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BowlingEF.Entities
{
/// <summary>
/// Classe de gestion des parties
/// </summary>
public class PartieEntity
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long Id { get; set; }
public JoueurEntity Joueur { get; set; }
public ICollection<FrameEntity> Frames { get; set; }
public int Score { get; set; }
public PartieEntity()
{
Frames = new List<FrameEntity>();
}
}
}

@ -0,0 +1,151 @@
// <auto-generated />
using System;
using BowlingEF.Context;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
#nullable disable
namespace BowlingEF.Migrations
{
[DbContext(typeof(BowlingContext))]
[Migration("20221015045144_migration001")]
partial class migration001
{
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder.HasAnnotation("ProductVersion", "6.0.10");
modelBuilder.Entity("BowlingEF.Entities.EquipeEntity", b =>
{
b.Property<long>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property<string>("Nom")
.IsRequired()
.HasColumnType("TEXT");
b.HasKey("Id");
b.ToTable("Equipes");
});
modelBuilder.Entity("BowlingEF.Entities.FrameEntity", b =>
{
b.Property<long>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property<bool>("IsSpare")
.HasColumnType("INTEGER");
b.Property<bool>("IsStrike")
.HasColumnType("INTEGER");
b.Property<int>("Lancer1")
.HasColumnType("INTEGER");
b.Property<int>("Lancer2")
.HasColumnType("INTEGER");
b.Property<int>("Lancer3")
.HasColumnType("INTEGER");
b.Property<int>("Numero")
.HasColumnType("INTEGER");
b.Property<long>("PartieId")
.HasColumnType("INTEGER");
b.HasKey("Id");
b.HasIndex("PartieId");
b.ToTable("Frames");
});
modelBuilder.Entity("BowlingEF.Entities.JoueurEntity", b =>
{
b.Property<long>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property<long?>("EquipeEntityId")
.HasColumnType("INTEGER");
b.Property<string>("Pseudo")
.IsRequired()
.HasColumnType("TEXT");
b.HasKey("Id");
b.HasIndex("EquipeEntityId");
b.ToTable("Joueurs");
});
modelBuilder.Entity("BowlingEF.Entities.PartieEntity", b =>
{
b.Property<long>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property<long>("JoueurId")
.HasColumnType("INTEGER");
b.Property<int>("Score")
.HasColumnType("INTEGER");
b.HasKey("Id");
b.HasIndex("JoueurId");
b.ToTable("Parties");
});
modelBuilder.Entity("BowlingEF.Entities.FrameEntity", b =>
{
b.HasOne("BowlingEF.Entities.PartieEntity", "Partie")
.WithMany("Frames")
.HasForeignKey("PartieId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Partie");
});
modelBuilder.Entity("BowlingEF.Entities.JoueurEntity", b =>
{
b.HasOne("BowlingEF.Entities.EquipeEntity", null)
.WithMany("Joueurs")
.HasForeignKey("EquipeEntityId");
});
modelBuilder.Entity("BowlingEF.Entities.PartieEntity", b =>
{
b.HasOne("BowlingEF.Entities.JoueurEntity", "Joueur")
.WithMany()
.HasForeignKey("JoueurId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Joueur");
});
modelBuilder.Entity("BowlingEF.Entities.EquipeEntity", b =>
{
b.Navigation("Joueurs");
});
modelBuilder.Entity("BowlingEF.Entities.PartieEntity", b =>
{
b.Navigation("Frames");
});
#pragma warning restore 612, 618
}
}
}

@ -0,0 +1,119 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace BowlingEF.Migrations
{
public partial class migration001 : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "Equipes",
columns: table => new
{
Id = table.Column<long>(type: "INTEGER", nullable: false)
.Annotation("Sqlite:Autoincrement", true),
Nom = table.Column<string>(type: "TEXT", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Equipes", x => x.Id);
});
migrationBuilder.CreateTable(
name: "Joueurs",
columns: table => new
{
Id = table.Column<long>(type: "INTEGER", nullable: false)
.Annotation("Sqlite:Autoincrement", true),
Pseudo = table.Column<string>(type: "TEXT", nullable: false),
EquipeEntityId = table.Column<long>(type: "INTEGER", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Joueurs", x => x.Id);
table.ForeignKey(
name: "FK_Joueurs_Equipes_EquipeEntityId",
column: x => x.EquipeEntityId,
principalTable: "Equipes",
principalColumn: "Id");
});
migrationBuilder.CreateTable(
name: "Parties",
columns: table => new
{
Id = table.Column<long>(type: "INTEGER", nullable: false)
.Annotation("Sqlite:Autoincrement", true),
JoueurId = table.Column<long>(type: "INTEGER", nullable: false),
Score = table.Column<int>(type: "INTEGER", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Parties", x => x.Id);
table.ForeignKey(
name: "FK_Parties_Joueurs_JoueurId",
column: x => x.JoueurId,
principalTable: "Joueurs",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "Frames",
columns: table => new
{
Id = table.Column<long>(type: "INTEGER", nullable: false)
.Annotation("Sqlite:Autoincrement", true),
Numero = table.Column<int>(type: "INTEGER", nullable: false),
Lancer1 = table.Column<int>(type: "INTEGER", nullable: false),
Lancer2 = table.Column<int>(type: "INTEGER", nullable: false),
Lancer3 = table.Column<int>(type: "INTEGER", nullable: false),
IsStrike = table.Column<bool>(type: "INTEGER", nullable: false),
IsSpare = table.Column<bool>(type: "INTEGER", nullable: false),
PartieId = table.Column<long>(type: "INTEGER", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Frames", x => x.Id);
table.ForeignKey(
name: "FK_Frames_Parties_PartieId",
column: x => x.PartieId,
principalTable: "Parties",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateIndex(
name: "IX_Frames_PartieId",
table: "Frames",
column: "PartieId");
migrationBuilder.CreateIndex(
name: "IX_Joueurs_EquipeEntityId",
table: "Joueurs",
column: "EquipeEntityId");
migrationBuilder.CreateIndex(
name: "IX_Parties_JoueurId",
table: "Parties",
column: "JoueurId");
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "Frames");
migrationBuilder.DropTable(
name: "Parties");
migrationBuilder.DropTable(
name: "Joueurs");
migrationBuilder.DropTable(
name: "Equipes");
}
}
}

@ -0,0 +1,149 @@
// <auto-generated />
using System;
using BowlingEF.Context;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
#nullable disable
namespace BowlingEF.Migrations
{
[DbContext(typeof(BowlingContext))]
partial class BowlingContextModelSnapshot : ModelSnapshot
{
protected override void BuildModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder.HasAnnotation("ProductVersion", "6.0.10");
modelBuilder.Entity("BowlingEF.Entities.EquipeEntity", b =>
{
b.Property<long>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property<string>("Nom")
.IsRequired()
.HasColumnType("TEXT");
b.HasKey("Id");
b.ToTable("Equipes");
});
modelBuilder.Entity("BowlingEF.Entities.FrameEntity", b =>
{
b.Property<long>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property<bool>("IsSpare")
.HasColumnType("INTEGER");
b.Property<bool>("IsStrike")
.HasColumnType("INTEGER");
b.Property<int>("Lancer1")
.HasColumnType("INTEGER");
b.Property<int>("Lancer2")
.HasColumnType("INTEGER");
b.Property<int>("Lancer3")
.HasColumnType("INTEGER");
b.Property<int>("Numero")
.HasColumnType("INTEGER");
b.Property<long>("PartieId")
.HasColumnType("INTEGER");
b.HasKey("Id");
b.HasIndex("PartieId");
b.ToTable("Frames");
});
modelBuilder.Entity("BowlingEF.Entities.JoueurEntity", b =>
{
b.Property<long>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property<long?>("EquipeEntityId")
.HasColumnType("INTEGER");
b.Property<string>("Pseudo")
.IsRequired()
.HasColumnType("TEXT");
b.HasKey("Id");
b.HasIndex("EquipeEntityId");
b.ToTable("Joueurs");
});
modelBuilder.Entity("BowlingEF.Entities.PartieEntity", b =>
{
b.Property<long>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property<long>("JoueurId")
.HasColumnType("INTEGER");
b.Property<int>("Score")
.HasColumnType("INTEGER");
b.HasKey("Id");
b.HasIndex("JoueurId");
b.ToTable("Parties");
});
modelBuilder.Entity("BowlingEF.Entities.FrameEntity", b =>
{
b.HasOne("BowlingEF.Entities.PartieEntity", "Partie")
.WithMany("Frames")
.HasForeignKey("PartieId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Partie");
});
modelBuilder.Entity("BowlingEF.Entities.JoueurEntity", b =>
{
b.HasOne("BowlingEF.Entities.EquipeEntity", null)
.WithMany("Joueurs")
.HasForeignKey("EquipeEntityId");
});
modelBuilder.Entity("BowlingEF.Entities.PartieEntity", b =>
{
b.HasOne("BowlingEF.Entities.JoueurEntity", "Joueur")
.WithMany()
.HasForeignKey("JoueurId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Joueur");
});
modelBuilder.Entity("BowlingEF.Entities.EquipeEntity", b =>
{
b.Navigation("Joueurs");
});
modelBuilder.Entity("BowlingEF.Entities.PartieEntity", b =>
{
b.Navigation("Frames");
});
#pragma warning restore 612, 618
}
}
}

@ -12,6 +12,7 @@ namespace BowlingLib.Model
{
private string nom;
private readonly long id;
public List<Joueur> Joueurs = new List<Joueur>();

@ -21,7 +21,7 @@ namespace BowlingLib.Model
}
private int numero;
private long id;
private readonly long id;
public long Id
{
get { return id; }
@ -126,7 +126,7 @@ namespace BowlingLib.Model
this.QuillesTombees = 0;
}
public Frame(int numero, long id, int quillesRestantes, int quillesTombees, bool isStrike, bool isSpare, bool isPark, bool isFinished, Lancer lancer1, Lancer lancer2, Lancer lancer3) : this(numero)
public Frame(int numero, long id, int quillesRestantes, int quillesTombees, bool isStrike, bool isSpare, bool isPark, bool isFinished, Lancer lancer1, Lancer lancer2, Lancer? lancer3) : this(numero)
{
this.id = id;
QuillesRestantes = quillesRestantes;

@ -48,7 +48,7 @@ namespace BowlingLib.Model
public override int GetHashCode()
{
return HashCode.Combine(pseudo, id, Id, Pseudo);
return HashCode.Combine(id, Id, Pseudo);
}
}
}

@ -0,0 +1,14 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\BowlingEF\BowlingEF.csproj" />
<ProjectReference Include="..\Business\Business.csproj" />
</ItemGroup>
</Project>

@ -0,0 +1,38 @@
using BowlingEF.Context;
using Business;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BowlingMaping
{
//public class DbDataManager : IDataManager
//{
// private readonly BowlingContext context;
// public DbDataManager(BowlingContext context)
// {
// this.context = context;
// }
// public void Add(Manager data)
// {
// context.Add(data);
// context.SaveChanges();
// }
// public void Delete(Manager data)
// {
// context.Remove(data);
// context.SaveChanges();
// }
// public void Update(Manager data)
// {
// context.Update(data);
// context.SaveChanges();
// }
//}
}

@ -13,9 +13,11 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BowlingAppUnitTest", "Tests
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BowlingStub", "BowlingStub\BowlingStub.csproj", "{B50615A5-ABFD-4A9C-B236-DBAEDE62AB2E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Business", "Business\Business.csproj", "{4F0C1B08-1DB7-4424-9521-EB13A858D09B}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Business", "Business\Business.csproj", "{4F0C1B08-1DB7-4424-9521-EB13A858D09B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BowlingEF", "BowlingEF\BowlingEF.csproj", "{1E42224B-45E4-433C-9D20-0A61023790ED}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BowlingEF", "BowlingEF\BowlingEF.csproj", "{1E42224B-45E4-433C-9D20-0A61023790ED}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BowlingMaping", "BowlingMaping\BowlingMaping.csproj", "{874DDEF3-1FDA-4ECE-826F-F67143823544}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -47,6 +49,10 @@ Global
{1E42224B-45E4-433C-9D20-0A61023790ED}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1E42224B-45E4-433C-9D20-0A61023790ED}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1E42224B-45E4-433C-9D20-0A61023790ED}.Release|Any CPU.Build.0 = Release|Any CPU
{874DDEF3-1FDA-4ECE-826F-F67143823544}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{874DDEF3-1FDA-4ECE-826F-F67143823544}.Debug|Any CPU.Build.0 = Debug|Any CPU
{874DDEF3-1FDA-4ECE-826F-F67143823544}.Release|Any CPU.ActiveCfg = Release|Any CPU
{874DDEF3-1FDA-4ECE-826F-F67143823544}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

Loading…
Cancel
Save