one to many : championEntity -> RunePageEntity
continuous-integration/drone/push Build is passing Details

EF2
Bastien OLLIER 2 years ago
parent 56dfa7a5ce
commit 3465261b70

@ -19,8 +19,7 @@ namespace EFLol
//public ReadOnlyDictionary<string, int> Characteristics { get; private set; } //public ReadOnlyDictionary<string, int> Characteristics { get; private set; }
private HashSet<SkillEntity> skills = new HashSet<SkillEntity>(); private HashSet<SkillEntity> skills = new HashSet<SkillEntity>();
public Collection<SkinEntity> Skins { get; set; } public Collection<SkinEntity> Skins { get; set; }
public Collection<RunePageEntity> ListRunePages { get; set; }
//public List<Tuple<ChampionEntity, RunePage>> championsAndRunePages }
}
} }

@ -11,9 +11,10 @@ namespace EFLol
{ {
public DbSet<ChampionEntity> Champions { get; set; } public DbSet<ChampionEntity> Champions { get; set; }
public DbSet<SkinEntity> Skins { get; set; } public DbSet<SkinEntity> Skins { get; set; }
public DbSet<RuneEntity> Runes { get; set; } public DbSet<RuneEntity> Runes { get; set; }
public DbSet<RunePageEntity> RunePages { get; set; }
public MyDbContext()
public MyDbContext()
{ } { }
public MyDbContext(DbContextOptions<MyDbContext> options) public MyDbContext(DbContextOptions<MyDbContext> options)
@ -32,8 +33,11 @@ namespace EFLol
{ {
base.OnModelCreating(modelBuilder); base.OnModelCreating(modelBuilder);
modelBuilder.Entity<ChampionEntity>().Property(c => c.Id).ValueGeneratedOnAdd(); modelBuilder.Entity<ChampionEntity>().Property(c => c.Id).ValueGeneratedOnAdd();
modelBuilder.Entity<SkinEntity>().Property(s => s.Id).ValueGeneratedOnAdd(); modelBuilder.Entity<SkinEntity>().Property(s => s.Id).ValueGeneratedOnAdd();
}
} modelBuilder.Entity<RuneEntity>().Property(s => s.Id).ValueGeneratedOnAdd();
modelBuilder.Entity<RuneEntity>().Property(s => s.Id).ValueGeneratedOnAdd();
}
}
} }

@ -1,65 +1,77 @@
using System.Collections.ObjectModel; using System.Collections.Generic;
using System.Collections.ObjectModel;
using EFLol; using EFLol;
using (var context = new MyDbContext()) internal class Program
{ {
// Clean the DB before starting private static void Main(string[] args)
Console.WriteLine("Clean the DB before starting"); {
context.Database.EnsureDeleted(); using (var context = new MyDbContext())
context.Database.EnsureCreated(); {
} // Clean the DB before starting
Console.WriteLine("Clean the DB before starting");
SkinEntity black = new SkinEntity { Name = "Black", Description = "Black skin", Icon = "black.png", Price = 0.99f }; context.Database.EnsureDeleted();
SkinEntity white = new SkinEntity { Name = "White", Description = "White skin", Icon = "white.png", Price = 150.99f }; context.Database.EnsureCreated();
SkinEntity green = new SkinEntity { Name = "Green", Description = "Green skin", Icon = "green.png", Price = 4.99f }; }
ChampionEntity Zeus = new ChampionEntity SkinEntity black = new SkinEntity { Name = "Black", Description = "Black skin", Icon = "black.png", Price = 0.99f };
{ SkinEntity white = new SkinEntity { Name = "White", Description = "White skin", Icon = "white.png", Price = 150.99f };
Name = "Zeus", SkinEntity green = new SkinEntity { Name = "Green", Description = "Green skin", Icon = "green.png", Price = 4.99f };
Bio = "Zeus is the god of the sky",
Skins = new Collection<SkinEntity>(new List<SkinEntity> { black, white }) RuneEntity rune1 = new RuneEntity { Id = 1, Name = "rune1", Description = "super rune1" };
RuneEntity rune2 = new RuneEntity { Id = 2, Name = "rune2", Description = "super rune2" };
}; RuneEntity rune3 = new RuneEntity { Id = 3, Name = "rune3", Description = "super rune3" };
ChampionEntity Hera = new ChampionEntity
{ RunePageEntity runePage1 = new RunePageEntity { Id = 1, Name = "runepage1"/*, Runes = new Dictionary<Category, RuneEntity> { { Category.Major, rune1 } }*/ };
Name = "Hera",
Bio = "Hera is the goddess of marriage", ChampionEntity Zeus = new ChampionEntity { Name = "Zeus", Bio = "Zeus is the god of the sky", Skins = new Collection<SkinEntity>(new List<SkinEntity> { black, white }) };
Skins = new Collection<SkinEntity>(new List<SkinEntity> { green }) ChampionEntity Hera = new ChampionEntity { Name = "Hera", Bio = "Hera is the goddess of marriage", Skins = new Collection<SkinEntity>(new List<SkinEntity> { green }) };
ChampionEntity Poseidon = new ChampionEntity {
}; Name = "Poseidon", Bio = "Poseidon is the god of the sea",
ChampionEntity Poseidon = new ChampionEntity { Name = "Poseidon", Bio = "Poseidon is the god of the sea" }; ListRunePages = new Collection<RunePageEntity>(new List<RunePageEntity> { { runePage1 } })
};
using (var context = new MyDbContext())
using (var context = new MyDbContext()) {
{ Console.WriteLine("Creates and inserts new Champions");
Console.WriteLine("Creates and inserts new Champions"); context.Add(Zeus);
context.Add(Zeus); context.Add(Hera);
context.Add(Hera); context.Add(Poseidon);
context.Add(Poseidon); context.SaveChanges();
context.SaveChanges(); }
}
using (var context = new MyDbContext())
using (var context = new MyDbContext()) {
{ foreach (var n in context.Champions)
foreach (var n in context.Champions) {
{ // LINQ to select the skins of the current champion
// LINQ to select the skins of the current champion var skins = context.Champions.Where(c => c.Id == n.Id).SelectMany(c => c.Skins);
var skins = context.Champions.Where(c => c.Id == n.Id).SelectMany(c => c.Skins); var runePage = context.Champions.Where(c => c.Id == n.Id).SelectMany(c => c.ListRunePages);
// Display the champion and its skins // Display the champion and its skins
Console.WriteLine($"Champion n°{n.Id} - {n.Name} : {skins.Count()} skins"); Console.WriteLine($"Champion n°{n.Id} - {n.Name} : {skins.Count()} skins, {runePage.Count()} runePage");
} }
context.SaveChanges(); context.SaveChanges();
} }
using (var context = new MyDbContext()) using (var context = new MyDbContext())
{ {
foreach (var n in context.Skins) foreach (var n in context.Skins)
{ {
Console.WriteLine($"Skin n°{n.Id} - {n.Name}" + (n.Price != null ? $" - {n.Price}" : "")); Console.WriteLine($"Skin n°{n.Id} - {n.Name}" + (n.Price != null ? $" - {n.Price}" : ""));
} }
context.SaveChanges(); context.SaveChanges();
}
using (var context = new MyDbContext())
{
foreach (var n in context.RunePages)
{
Console.WriteLine($"runePage n°{n.Id} - {n.Name}");
}
context.SaveChanges();
}
}
} }

@ -11,7 +11,20 @@ namespace EFLol
public int Id { get; set; } public int Id { get; set; }
public string Name { get; set; } public string Name { get; set; }
public string Description { get; set; } public string Description { get; set; }
public RuneFamilyEntity RuneFamily { get; set; } public RuneFamilyEntity RuneFamily { get; set; }
} public static implicit operator Dictionary<object, object>(RuneEntity v)
{
throw new NotImplementedException();
}
}
public enum RuneFamilyEntity
{
Unknown,
Precision,
Domination
}
} }

@ -1,15 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EFLol
{
public class RuneFamilyEntity
{
public string Name { get; set; }
public string Description { get; set; }
}
}

@ -7,10 +7,10 @@ using System.Threading.Tasks;
namespace EFLol namespace EFLol
{ {
public class RunePageEntity public class RunePageEntity
{ {
public String Name { get; set; } public int Id { get; set; }
public Dictionary<Category, RuneEntity> Runes { get; set; } public String Name { get; set; }
//public Dictionary<Category, RuneEntity> Runes { get; set; }
} }
public enum Category public enum Category

Loading…
Cancel
Save