From f80eb447361ed1841ec0729b212e86f255b22fc1 Mon Sep 17 00:00:00 2001 From: "arthur.valin" Date: Thu, 9 Feb 2023 14:39:53 +0100 Subject: [PATCH] Customising RunePageRune Join and adding Large Image --- .vs/League-of-Legends_Project3/v17/.wsuo | Bin 18432 -> 18944 bytes .../Sources/Entities/ChampionDbContext.cs | 18 ++ .../Sources/Entities/ChampionEntity.cs | 8 +- .../Sources/Entities/Entities.Champions.db | Bin 32768 -> 81920 bytes .../Entities/Entities.Champions.db-shm | Bin 32768 -> 32768 bytes .../Entities/Entities.Champions.db-wal | Bin 1182472 -> 3205392 bytes .../Sources/Entities/LargeImageEntity.cs | 19 ++ ...230209133904_myFirstMigration.Designer.cs} | 112 +++++++++--- ....cs => 20230209133904_myFirstMigration.cs} | 164 ++++++++++++------ .../ChampionDbContextModelSnapshot.cs | 110 +++++++++--- .../Sources/Entities/RuneEntity.cs | 7 +- .../Sources/Entities/RunePageRuneEntity.cs | 14 ++ .../Sources/Entities/SkinEntity.cs | 5 + ...0230209124258_myFirstMigration.Designer.cs | 44 +++++ .../20230209124258_myFirstMigration.cs | 22 +++ .../Sources/StubLib/StubData.RunePages.cs | 13 +- 16 files changed, 426 insertions(+), 110 deletions(-) create mode 100644 EntityFramework_LoL/Sources/Entities/LargeImageEntity.cs rename EntityFramework_LoL/Sources/Entities/Migrations/{20230208162909_myFirstMigration.Designer.cs => 20230209133904_myFirstMigration.Designer.cs} (78%) rename EntityFramework_LoL/Sources/Entities/Migrations/{20230208162909_myFirstMigration.cs => 20230209133904_myFirstMigration.cs} (70%) create mode 100644 EntityFramework_LoL/Sources/Entities/RunePageRuneEntity.cs create mode 100644 EntityFramework_LoL/Sources/EntityFramework/Migrations/20230209124258_myFirstMigration.Designer.cs create mode 100644 EntityFramework_LoL/Sources/EntityFramework/Migrations/20230209124258_myFirstMigration.cs diff --git a/.vs/League-of-Legends_Project3/v17/.wsuo b/.vs/League-of-Legends_Project3/v17/.wsuo index e917b20bd7ac0407438812f450c49c21b2d86802..80c36fce6bc5f9b6f5a1fd8186a6fd6e3ad06882 100644 GIT binary patch delta 956 zcmbVKO-mb56rDSr>O|j*GmU1_B#kv@VGAQoCdP;XTNsL^g`}WswKZ9}jNmfRO&3{| zdH#UnzR>3Vfq+8AZUnpOj}W?;g;~`0-h3JxDD=YN@y>hq-g7@{AE0&!pZCx~DN(&s2QEO1+4qpXMmmURp!-F~a{@7rFc9=k#>8vQGVdc3 zMZ^$s#5}SwQPNUhwoBltdx6^4&AdtcLe8DMOG$A^n*mh+{P^s#d*`SO>k=){cY%N?3aD87`x;A0YZ7sz!;0kf5&iN#7`TqM7wZ zd_**PF#8Hv0$t{Ax;1l}xLW+ifg0CqA}Uybh-{f>z}p#Ux`RxixGh}PU!(OlEzX>uK;k^BjbunX*#3|v90?&XiU66q!yBzt_$ zXak8L>$Gi6gK5!vboRG{^z#h7hbJR@Ag>m6@G__Ra6Ost|57fDu)~42ZFofCQd`{6 zTKP!cu1{81H^)+McXPXrxhbDzKyH F>K`E3PSyYb delta 1178 zcmbtT&ubG=5YCI6bW`8PO|to&*iDF`YQRQQD-|S4&_W8Upx~hgJ$S45YlR+DFXoU# z-05E+Uc71c<|&eb6+sJnDR}fB5EjWEY@OM3!`4W7|EvHj;ilx1(UaQsIvy*$$%zy7<%S1{ z3jgobhfo+K`D5+Lsh0V|cV;bA6$|o53s{xwqb<<92OeBHF{{CrHE8XrX3;P}B zN_vs;G=^tAzZkOu3^R+IQm7s~v}%~@;Vm3rv*hjP^ton6ihRoH-*gdJgXM7{wK_tqkrH zt<7&jn8OnyGcp5`c%(~{t|WztQZUion$iAMzQBS~8O;LhSd#}ZCGGu~l&)w_0!z^( z=e_M8R=jPfePdRH4fULS_x2oqCQCxj`4Bo~AHKGl6sp;&XXWk`Kuigln?=Q{;e*qy|nuP!W diff --git a/EntityFramework_LoL/Sources/Entities/ChampionDbContext.cs b/EntityFramework_LoL/Sources/Entities/ChampionDbContext.cs index b2c8f8f..e28b10f 100644 --- a/EntityFramework_LoL/Sources/Entities/ChampionDbContext.cs +++ b/EntityFramework_LoL/Sources/Entities/ChampionDbContext.cs @@ -1,5 +1,6 @@ using Microsoft.EntityFrameworkCore; using Shared; +using System.Reflection.Metadata; using System.Security.Claims; using System.Xml.Linq; @@ -12,6 +13,7 @@ namespace Entities public DbSet skills { get; set; } public DbSet runes { get; set; } public DbSet runepages { get; set; } + public DbSet largeimages { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) @@ -21,8 +23,24 @@ namespace Entities protected override void OnModelCreating(ModelBuilder modelBuilder) { + + modelBuilder.Entity().Property(e => e.Id).ValueGeneratedOnAdd(); + modelBuilder.Entity().Property(e => e.Id).ValueGeneratedOnAdd(); + modelBuilder.Entity() + .HasMany(x => x.runes) + .WithMany(x => x.runepages) + .UsingEntity(); + + modelBuilder.Entity().HasData(new List() + { + new() + { + Id = Guid.NewGuid(), + Base64 = "aaa" + } + }); modelBuilder.Entity().HasData(new List() { new() diff --git a/EntityFramework_LoL/Sources/Entities/ChampionEntity.cs b/EntityFramework_LoL/Sources/Entities/ChampionEntity.cs index eea4371..5e3101a 100644 --- a/EntityFramework_LoL/Sources/Entities/ChampionEntity.cs +++ b/EntityFramework_LoL/Sources/Entities/ChampionEntity.cs @@ -15,8 +15,14 @@ namespace Entities public string? Icon { get; set; } [Required] public ChampionClass Class { get; set;} - public virtual ICollection? Skills { get; set; } + public Guid? ImageId { get; set; } + + [ForeignKey("ImageId")] + public LargeImageEntity? Image { get; set; } + + + } } diff --git a/EntityFramework_LoL/Sources/Entities/Entities.Champions.db b/EntityFramework_LoL/Sources/Entities/Entities.Champions.db index 301c8f4c5ac6b9533bdc98b5b32410e1b9e0753b..5847519f33f10f07991fe63c42421d6b8cbacc6f 100644 GIT binary patch literal 81920 zcmeI*&2QW09S3l}$dYBrViLz?+%5>CAaLB(fhbv4d@vkYraaAx?Mlv)peqDUVjM1d z@hB;nvh5(FLyyBQy9~pyp*`%d{Q*0!+kl}MPz)F__0Z?RpM+)uSAvS~ zm;S%<|Kigm3=0HaP@ppt5Hlj%y{y+O+IMreOU?Uwy;;iKQ)>r$qn>RTn!aD((mK}m zGns;t-czL9_J(p>iXIalm3FqJsC7_Ox)L2dUv#1S=9z$aYnAQZ=$Bn+*EOZy(pw#K zZCBmzeOEHbx6N&}rqLqKj#P{mIXstLMOvI$>p`)kvhwMG_|6*Jz1gp9KP9`u#rt}- zYOj{8b*sA6n3<9KQbQf5vujL^G^;!;JG$^*ObCc;YwY`tmin!#Mm>(Y<5aJfd+GJO zA`KdGBx6$W^pr%FL5P)oRN7N+?@8M`NkV`0&E@sjj%8S;kY4)?Gt53LV)e{+fKwUmRD*0janm_wnsSpekdS{BKyNz zR&OJnzTUK+!tQ=#Z5wtP>+*DuM$(af&^yA>==}k0Lu-}|{h&pDUQ&8ou1wvvYv^Sy zN(PQ}eq^NVUsS`N!rte1)|8BDR!u!dFz0F9P3TdOyDgt{zAwjvu}w6Uy1zEEow%}VTb4oI_*A41BeQW&%hN%5;w zesOK?m=sCDB{N6z8tTRaR(CwiSV@}KX486_bf;)-d!Y<_M|`0K3#1xZwWe1)o*6Do z9@mIg!6n&x33g{E0^)@WY_~JW&lI9F8i$kyY^C50PbN+l(GL*F-4b6{(JO>eduM#pm_ z=a%t|87d9V`OKE5oX7)i*JxDQ<<>Veqd7VXlm3w7{NlSQT7U2?rzCrB=E)nZN%KwC zGtuDK*&4h9PF;;%jn9YNfw5$a5;)}yOeSS&V9*t~l!zrL zXPk5g#^cMBzD2=Ln3g zBx6b0yXZGqKGAPNSxzn`WRf+R5wV(WiuB@e-8O=bZ86!|dH zB|ES{00Izz00bZa0SG_<0uX=z1fC^uiQi(MF?SF?65};(5OT$M&lpU(V>~Adf=6P! z<_RX~-ISF9i|L25{ z7~wPWgarZ+fB*y_009U<00Izz00bZafs-mQ&rQs3GVF%>K+9`VO(VauqqPm`>*~XY zHMK5PG%0JS^|HpDVJGJ17&dLx+J;taRP~DHH}C&*!V^Y#N}jMl00Izz00bZa0SG_< z0uX=z1R(J83rzB})-(YZkpB4VhkS{C{fB*y_009U<00Izz00bZa0SLSd z0y4|ryqLO{im$AvmBq|TLS9@-r;>{+%ggb_*|?^}GfJY+`(VqGY~KH8g}*W6 z3kw7w009U<00Izz00bZa0SG_<0xy}sJbyFzJTn3I@Bfqg|Np@M0C>ro7}bRU1Rwwb z2tWV=5P$##AOL|^RY2r?=Pw1<+vIO{Y8|cE($q>vYTj$K&aq?%o37qhTZZ~D-zeXg zw7Yk;a*MNn|Nm1)_>b`EtICGFApijgKmY;|fB*y_009U<00Lto5a!Rb{doZ{#GeoL z=K}2e{~w!w|L@~5$rWip00Izz00bZa0SG_<0uX=z1jbq5E1d7*JbUY&-qNIEOEn5= zz0#;j6}6`BYvhyve3!-GdZS&{%s&ZmS8Hc=L%V3-|9{K~{}vvPGY)ct00bZa0SG_< z0uX=z1Rwwb2#mErgum#R6W|2?vTG8+zW@ILBYYx!FxC!84gwH>00bZa0SG_<0uX=z z1R!w21>WTR^XF#*vm5FI>)!o-RV`~uy{_r|AN@*I)$14j`@0`~^U70m|5et%_{L0N z&i?CuQr7$|fCEjdY-rzBr3Y;@`qKX%Z~o@&_v{G!{{JIJ_)K_o!WmFK2tWV=5P$## zAOHafKmY;|fB*zW1WxnwtZT-Ao8cFON9P61`~S?Tk%O@T0uX=z1Rwwb2tWV=5P$## zAOL|e5-{)oOaS-)$E-n-4g??o0SG_<0uX=z1Rwwb2tdF?!2bNdCyek^ctUocC65`$ zt3cKxz3n+9`r_;mfB*y_009U<00Izz M00bZafs-Kce`fgVy#N3J delta 228 zcmZo@U~On%njkI6!@$760mLxCH&Mq}nukFzUW%9h2Ln6zY6iYb{A+nH@XhB@<6X+V zdb6T{AvaSc`{WZ$I*c5XzcTqqHPx`Pi;IghwuYA^Cgr3SXJ_UWg9*0H8#vP#8QCV^ z;gR76i^Lm(sLkhi&6ot(_{A9bAM@|xpU9uVZ_h8bS!+CxIer9Dx&)lL+1?R+~lGGgL$#4C| NH?wT`BfrQ&004VjK9K+b diff --git a/EntityFramework_LoL/Sources/Entities/Entities.Champions.db-shm b/EntityFramework_LoL/Sources/Entities/Entities.Champions.db-shm index 9cd8351f1caa059d87461e18d8ce17a5864f487c..be1302a557fa43b70c65f795a052420bbca6facd 100644 GIT binary patch literal 32768 zcmeI51&~!o7KZ=-$K73nyGwBQ;1Jy1NpN=!?gUG4NC@sExVyUtcX!CWyW6!dQxo>R z4UkEtyQ-_+>3h2S{NFkKYNl##PxMQv;kF`9ClEelARw0W`TXmog=b}NRV`iV>_ZEM zZ=UhSlnAeKbUTqSx{v?rSH}<~gp3gi# z`?}8miX*5KQ!u9oceu|_=j|QD5r;ZdKjmh^<6*n%#3@^b^XkK z?mF&#cg(+ezQz#NStp#wdhY)2n2F8Z*Tn4UYZw_{qtDp>&G|F28D=I{Qv-&ZXKaR@ z@pW_Q#%FB*=KR00g?HAC;B=RliNPK7v6Y@^B8 zpHh?I=#3`V*RLis-)J(n(PZq8rO7=vrjFe22(zDGJ?{6Qd1mrqY;R-tT*KDb@3|W` zrtYISyrVijn$z7Jd47MJF~2!-^WiziF)0(wpjv}fF)oFSOS)SC143y z0+xU!Up%vPrGrFS>MqwPL;Csx%e5}QKY{M?>!yz2UE!@LXyuv#K zVlakgd?sQ_reh|4&YaB0imbxgY``XL!LQh!gE@?2`7Nh%I%o3-uIFa%;(i|Hah~P{ zKIAjLr4&>l6;272RB4n^S(QV1R8ZAaTaDFP?bJ!#)LY{Aw5o;XkHTRV_7AE45Wndjj5@^d<0-mH&{gh+yvNRQkohFWNi{uqx1*nm^Gk8n)P zf~?9;9L}G(g_rr95tU3uR7d?ZMeB4#kL*eDlKsbW3t_9@OSE$CNek)RtrpR_Lnj(y zBOVeVDN-Q=vLX-4qc*<608GG7*of13fbdMhLafHl9KnU$%3t|{k(69TRagBrRX^*f z9^3l&lK#hWb8i^5%^L!#krAIGFN&iyDxfmzpg9I&Di&fp&fqm7Fg**iA-ixA7x4hE z@Es#7lZxpp4bVLOq6>OrtKA#a)+fLbNP|qshI}Z4y6AvGn1)5zfwOpnh|ItuY{agd z%*8y&tAwH`vx@6$4b*(C*F`Y1&6?@?RN07swzDxyBR;2X@q670cwkdc{% z#n_D9`5l+?D6ccHqA8ocPzMdxPui#}dT#4Jz~#~g*>a1_HSetZRFYF2M6}R;dPy`C$3sglze2pF$if=Io z%Wwb}5rk2hoh8_cJvo!hd6G97TrreOrPM`3v_zYALoaRp2dHe?V0p%+GA66Rth*5Ow?Lky;3 zDb`^hj^irs<{ds_Y^7CMHPLX*)Ha>g8(ZtX;kMoZia=AeLvM`4SWL!un2C8WUS(^x*1yKlvReYsVepOUWHBd9PQAc%E zPmR{M`d+j3gBEJ3R%(|H>V(eflCJ8e?uzy=vV2XM_5WZ5Zr~;2G9gni4Kp$;b1*N< zvliQNAct}cCvXbC=Pb_W&)muL{7gxdTIrQV*_B%b^rf0>j3#Nf4oS9>KUiMuLZ5=b zO*}y;#$#GmV0{kaME=5kOrQ*^q!t>hIohLh3S{g0QzXOg@remkR!fc3bgj}}ozy)A Kwsrmo8TbwISj6!F delta 346 zcmZo@U}|V!s+V}A%K!q(K+MR%ARrGUM1brW=`8o3Y>zZG@VDx9705A`db)+Jbg9!K zQq_aZ1_6+{|B(Phl!1*wAHq&(ffbCz(*jqZ}yXLB0r3*DI#U_lkIcj89CH@01Dw8E=@_UNZb* XkYfb0e=u>pV))9y%_tAzDX;(luDF8M diff --git a/EntityFramework_LoL/Sources/Entities/Entities.Champions.db-wal b/EntityFramework_LoL/Sources/Entities/Entities.Champions.db-wal index c02c794b78df6f8d8b92ee5a382d78297cb471e1..d2719b5abd4b3fd502dc6237057f86c2a8354294 100644 GIT binary patch delta 48617 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 B4nqI{ diff --git a/EntityFramework_LoL/Sources/Entities/LargeImageEntity.cs b/EntityFramework_LoL/Sources/Entities/LargeImageEntity.cs new file mode 100644 index 0000000..3448ac9 --- /dev/null +++ b/EntityFramework_LoL/Sources/Entities/LargeImageEntity.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Entities +{ + public class LargeImageEntity + { + + [Key] + public Guid Id { get; set; } + [Required] + public string Base64 { get; set; } + + } +} diff --git a/EntityFramework_LoL/Sources/Entities/Migrations/20230208162909_myFirstMigration.Designer.cs b/EntityFramework_LoL/Sources/Entities/Migrations/20230209133904_myFirstMigration.Designer.cs similarity index 78% rename from EntityFramework_LoL/Sources/Entities/Migrations/20230208162909_myFirstMigration.Designer.cs rename to EntityFramework_LoL/Sources/Entities/Migrations/20230209133904_myFirstMigration.Designer.cs index 130ec85..81f4297 100644 --- a/EntityFramework_LoL/Sources/Entities/Migrations/20230208162909_myFirstMigration.Designer.cs +++ b/EntityFramework_LoL/Sources/Entities/Migrations/20230209133904_myFirstMigration.Designer.cs @@ -11,7 +11,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; namespace Entities.Migrations { [DbContext(typeof(ChampionDbContext))] - [Migration("20230208162909_myFirstMigration")] + [Migration("20230209133904_myFirstMigration")] partial class myFirstMigration { /// @@ -52,8 +52,13 @@ namespace Entities.Migrations b.Property("Icon") .HasColumnType("TEXT"); + b.Property("ImageId") + .HasColumnType("TEXT"); + b.HasKey("Name"); + b.HasIndex("ImageId"); + b.ToTable("champions"); b.HasData( @@ -71,6 +76,28 @@ namespace Entities.Migrations }); }); + modelBuilder.Entity("Entities.LargeImageEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("Base64") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("largeimages"); + + b.HasData( + new + { + Id = new Guid("70d7aace-13a9-40e1-bd94-99790805f6d0"), + Base64 = "aaa" + }); + }); + modelBuilder.Entity("Entities.RuneEntity", b => { b.Property("Name") @@ -82,11 +109,16 @@ namespace Entities.Migrations .HasMaxLength(500) .HasColumnType("TEXT"); + b.Property("ImageId") + .HasColumnType("TEXT"); + b.Property("RuneFamily") .HasColumnType("INTEGER"); b.HasKey("Name"); + b.HasIndex("ImageId"); + b.ToTable("runes"); b.HasData( @@ -122,11 +154,29 @@ namespace Entities.Migrations b.HasData( new { - Id = new Guid("78729bae-c931-4a75-9662-6754ed8e2ce3"), + Id = new Guid("a5a4f69b-5cbb-48c1-beb4-896bc9171714"), Name = "Runepage_1" }); }); + modelBuilder.Entity("Entities.RunePageRuneEntity", b => + { + b.Property("runepagesId") + .HasColumnType("TEXT"); + + b.Property("runesName") + .HasColumnType("TEXT"); + + b.Property("Category") + .HasColumnType("INTEGER"); + + b.HasKey("runepagesId", "runesName"); + + b.HasIndex("runesName"); + + b.ToTable("RunePageRuneEntity"); + }); + modelBuilder.Entity("Entities.SkillEntity", b => { b.Property("Name") @@ -179,6 +229,9 @@ namespace Entities.Migrations .IsRequired() .HasColumnType("TEXT"); + b.Property("ImageId") + .HasColumnType("TEXT"); + b.Property("Price") .HasColumnType("REAL"); @@ -186,6 +239,8 @@ namespace Entities.Migrations b.HasIndex("ChampionForeignKey"); + b.HasIndex("ImageId"); + b.ToTable("skins"); b.HasData( @@ -207,21 +262,6 @@ namespace Entities.Migrations }); }); - modelBuilder.Entity("RuneEntityRunePageEntity", b => - { - b.Property("runepagesId") - .HasColumnType("TEXT"); - - b.Property("runesName") - .HasColumnType("TEXT"); - - b.HasKey("runepagesId", "runesName"); - - b.HasIndex("runesName"); - - b.ToTable("RuneEntityRunePageEntity"); - }); - modelBuilder.Entity("ChampionEntitySkillEntity", b => { b.HasOne("Entities.ChampionEntity", null) @@ -237,18 +277,25 @@ namespace Entities.Migrations .IsRequired(); }); - modelBuilder.Entity("Entities.SkinEntity", b => + modelBuilder.Entity("Entities.ChampionEntity", b => { - b.HasOne("Entities.ChampionEntity", "Champion") + b.HasOne("Entities.LargeImageEntity", "Image") .WithMany() - .HasForeignKey("ChampionForeignKey") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); + .HasForeignKey("ImageId"); - b.Navigation("Champion"); + b.Navigation("Image"); }); - modelBuilder.Entity("RuneEntityRunePageEntity", b => + modelBuilder.Entity("Entities.RuneEntity", b => + { + b.HasOne("Entities.LargeImageEntity", "Image") + .WithMany() + .HasForeignKey("ImageId"); + + b.Navigation("Image"); + }); + + modelBuilder.Entity("Entities.RunePageRuneEntity", b => { b.HasOne("Entities.RunePageEntity", null) .WithMany() @@ -262,6 +309,23 @@ namespace Entities.Migrations .OnDelete(DeleteBehavior.Cascade) .IsRequired(); }); + + modelBuilder.Entity("Entities.SkinEntity", b => + { + b.HasOne("Entities.ChampionEntity", "Champion") + .WithMany() + .HasForeignKey("ChampionForeignKey") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Entities.LargeImageEntity", "Image") + .WithMany() + .HasForeignKey("ImageId"); + + b.Navigation("Champion"); + + b.Navigation("Image"); + }); #pragma warning restore 612, 618 } } diff --git a/EntityFramework_LoL/Sources/Entities/Migrations/20230208162909_myFirstMigration.cs b/EntityFramework_LoL/Sources/Entities/Migrations/20230209133904_myFirstMigration.cs similarity index 70% rename from EntityFramework_LoL/Sources/Entities/Migrations/20230208162909_myFirstMigration.cs rename to EntityFramework_LoL/Sources/Entities/Migrations/20230209133904_myFirstMigration.cs index 62248a1..eb3748a 100644 --- a/EntityFramework_LoL/Sources/Entities/Migrations/20230208162909_myFirstMigration.cs +++ b/EntityFramework_LoL/Sources/Entities/Migrations/20230209133904_myFirstMigration.cs @@ -14,17 +14,15 @@ namespace Entities.Migrations protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.CreateTable( - name: "champions", + name: "largeimages", columns: table => new { - Name = table.Column(type: "TEXT", maxLength: 256, nullable: false), - Bio = table.Column(type: "TEXT", maxLength: 500, nullable: false), - Icon = table.Column(type: "TEXT", nullable: true), - Class = table.Column(type: "INTEGER", nullable: false) + Id = table.Column(type: "TEXT", nullable: false), + Base64 = table.Column(type: "TEXT", nullable: false) }, constraints: table => { - table.PrimaryKey("PK_champions", x => x.Name); + table.PrimaryKey("PK_largeimages", x => x.Id); }); migrationBuilder.CreateTable( @@ -40,29 +38,79 @@ namespace Entities.Migrations }); migrationBuilder.CreateTable( - name: "runes", + name: "skills", columns: table => new { Name = table.Column(type: "TEXT", maxLength: 256, nullable: false), Description = table.Column(type: "TEXT", maxLength: 500, nullable: false), - RuneFamily = table.Column(type: "INTEGER", nullable: false) + SkillType = table.Column(type: "INTEGER", nullable: false) }, constraints: table => { - table.PrimaryKey("PK_runes", x => x.Name); + table.PrimaryKey("PK_skills", x => x.Name); }); migrationBuilder.CreateTable( - name: "skills", + name: "champions", + columns: table => new + { + Name = table.Column(type: "TEXT", maxLength: 256, nullable: false), + Bio = table.Column(type: "TEXT", maxLength: 500, nullable: false), + Icon = table.Column(type: "TEXT", nullable: true), + Class = table.Column(type: "INTEGER", nullable: false), + ImageId = table.Column(type: "TEXT", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_champions", x => x.Name); + table.ForeignKey( + name: "FK_champions_largeimages_ImageId", + column: x => x.ImageId, + principalTable: "largeimages", + principalColumn: "Id"); + }); + + migrationBuilder.CreateTable( + name: "runes", columns: table => new { Name = table.Column(type: "TEXT", maxLength: 256, nullable: false), Description = table.Column(type: "TEXT", maxLength: 500, nullable: false), - SkillType = table.Column(type: "INTEGER", nullable: false) + RuneFamily = table.Column(type: "INTEGER", nullable: false), + ImageId = table.Column(type: "TEXT", nullable: true) }, constraints: table => { - table.PrimaryKey("PK_skills", x => x.Name); + table.PrimaryKey("PK_runes", x => x.Name); + table.ForeignKey( + name: "FK_runes_largeimages_ImageId", + column: x => x.ImageId, + principalTable: "largeimages", + principalColumn: "Id"); + }); + + migrationBuilder.CreateTable( + name: "ChampionEntitySkillEntity", + columns: table => new + { + ChampionsName = table.Column(type: "TEXT", nullable: false), + SkillsName = table.Column(type: "TEXT", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_ChampionEntitySkillEntity", x => new { x.ChampionsName, x.SkillsName }); + table.ForeignKey( + name: "FK_ChampionEntitySkillEntity_champions_ChampionsName", + column: x => x.ChampionsName, + principalTable: "champions", + principalColumn: "Name", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_ChampionEntitySkillEntity_skills_SkillsName", + column: x => x.SkillsName, + principalTable: "skills", + principalColumn: "Name", + onDelete: ReferentialAction.Cascade); }); migrationBuilder.CreateTable( @@ -73,7 +121,8 @@ namespace Entities.Migrations Description = table.Column(type: "TEXT", maxLength: 500, nullable: false), Icon = table.Column(type: "TEXT", nullable: false), Price = table.Column(type: "REAL", nullable: false), - ChampionForeignKey = table.Column(type: "TEXT", nullable: false) + ChampionForeignKey = table.Column(type: "TEXT", nullable: false), + ImageId = table.Column(type: "TEXT", nullable: true) }, constraints: table => { @@ -84,77 +133,64 @@ namespace Entities.Migrations principalTable: "champions", principalColumn: "Name", onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_skins_largeimages_ImageId", + column: x => x.ImageId, + principalTable: "largeimages", + principalColumn: "Id"); }); migrationBuilder.CreateTable( - name: "RuneEntityRunePageEntity", + name: "RunePageRuneEntity", columns: table => new { runepagesId = table.Column(type: "TEXT", nullable: false), - runesName = table.Column(type: "TEXT", nullable: false) + runesName = table.Column(type: "TEXT", nullable: false), + Category = table.Column(type: "INTEGER", nullable: false) }, constraints: table => { - table.PrimaryKey("PK_RuneEntityRunePageEntity", x => new { x.runepagesId, x.runesName }); + table.PrimaryKey("PK_RunePageRuneEntity", x => new { x.runepagesId, x.runesName }); table.ForeignKey( - name: "FK_RuneEntityRunePageEntity_runepages_runepagesId", + name: "FK_RunePageRuneEntity_runepages_runepagesId", column: x => x.runepagesId, principalTable: "runepages", principalColumn: "Id", onDelete: ReferentialAction.Cascade); table.ForeignKey( - name: "FK_RuneEntityRunePageEntity_runes_runesName", + name: "FK_RunePageRuneEntity_runes_runesName", column: x => x.runesName, principalTable: "runes", principalColumn: "Name", onDelete: ReferentialAction.Cascade); }); - migrationBuilder.CreateTable( - name: "ChampionEntitySkillEntity", - columns: table => new - { - ChampionsName = table.Column(type: "TEXT", nullable: false), - SkillsName = table.Column(type: "TEXT", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_ChampionEntitySkillEntity", x => new { x.ChampionsName, x.SkillsName }); - table.ForeignKey( - name: "FK_ChampionEntitySkillEntity_champions_ChampionsName", - column: x => x.ChampionsName, - principalTable: "champions", - principalColumn: "Name", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_ChampionEntitySkillEntity_skills_SkillsName", - column: x => x.SkillsName, - principalTable: "skills", - principalColumn: "Name", - onDelete: ReferentialAction.Cascade); - }); - migrationBuilder.InsertData( table: "champions", - columns: new[] { "Name", "Bio", "Class", "Icon" }, + columns: new[] { "Name", "Bio", "Class", "Icon", "ImageId" }, values: new object[,] { - { "Armure", "Solide", 6, null }, - { "Dave", "Le meilleur Jazzman de France", 2, null } + { "Armure", "Solide", 6, null, null }, + { "Dave", "Le meilleur Jazzman de France", 2, null, null } }); + migrationBuilder.InsertData( + table: "largeimages", + columns: new[] { "Id", "Base64" }, + values: new object[] { new Guid("70d7aace-13a9-40e1-bd94-99790805f6d0"), "aaa" }); + migrationBuilder.InsertData( table: "runepages", columns: new[] { "Id", "Name" }, - values: new object[] { new Guid("78729bae-c931-4a75-9662-6754ed8e2ce3"), "Runepage_1" }); + values: new object[] { new Guid("a5a4f69b-5cbb-48c1-beb4-896bc9171714"), "Runepage_1" }); migrationBuilder.InsertData( table: "runes", - columns: new[] { "Name", "Description", "RuneFamily" }, + columns: new[] { "Name", "Description", "ImageId", "RuneFamily" }, values: new object[,] { - { "Alkatraz", "Lock effect", 2 }, - { "Bullseye", "Steady shot", 1 } + { "Alkatraz", "Lock effect", null, 2 }, + { "Bullseye", "Steady shot", null, 1 } }); migrationBuilder.InsertData( @@ -168,11 +204,11 @@ namespace Entities.Migrations migrationBuilder.InsertData( table: "skins", - columns: new[] { "Name", "ChampionForeignKey", "Description", "Icon", "Price" }, + columns: new[] { "Name", "ChampionForeignKey", "Description", "Icon", "ImageId", "Price" }, values: new object[,] { - { "Armure Fullspeed", "Armure", "Deja vu", "aaa", 9.99f }, - { "Dave de glace", "Dave", "Enneigé", "aaa", 7.99f } + { "Armure Fullspeed", "Armure", "Deja vu", "aaa", null, 9.99f }, + { "Dave de glace", "Dave", "Enneigé", "aaa", null, 7.99f } }); migrationBuilder.CreateIndex( @@ -181,14 +217,29 @@ namespace Entities.Migrations column: "SkillsName"); migrationBuilder.CreateIndex( - name: "IX_RuneEntityRunePageEntity_runesName", - table: "RuneEntityRunePageEntity", + name: "IX_champions_ImageId", + table: "champions", + column: "ImageId"); + + migrationBuilder.CreateIndex( + name: "IX_RunePageRuneEntity_runesName", + table: "RunePageRuneEntity", column: "runesName"); + migrationBuilder.CreateIndex( + name: "IX_runes_ImageId", + table: "runes", + column: "ImageId"); + migrationBuilder.CreateIndex( name: "IX_skins_ChampionForeignKey", table: "skins", column: "ChampionForeignKey"); + + migrationBuilder.CreateIndex( + name: "IX_skins_ImageId", + table: "skins", + column: "ImageId"); } /// @@ -198,7 +249,7 @@ namespace Entities.Migrations name: "ChampionEntitySkillEntity"); migrationBuilder.DropTable( - name: "RuneEntityRunePageEntity"); + name: "RunePageRuneEntity"); migrationBuilder.DropTable( name: "skins"); @@ -214,6 +265,9 @@ namespace Entities.Migrations migrationBuilder.DropTable( name: "champions"); + + migrationBuilder.DropTable( + name: "largeimages"); } } } diff --git a/EntityFramework_LoL/Sources/Entities/Migrations/ChampionDbContextModelSnapshot.cs b/EntityFramework_LoL/Sources/Entities/Migrations/ChampionDbContextModelSnapshot.cs index 7679554..aef1440 100644 --- a/EntityFramework_LoL/Sources/Entities/Migrations/ChampionDbContextModelSnapshot.cs +++ b/EntityFramework_LoL/Sources/Entities/Migrations/ChampionDbContextModelSnapshot.cs @@ -49,8 +49,13 @@ namespace Entities.Migrations b.Property("Icon") .HasColumnType("TEXT"); + b.Property("ImageId") + .HasColumnType("TEXT"); + b.HasKey("Name"); + b.HasIndex("ImageId"); + b.ToTable("champions"); b.HasData( @@ -68,6 +73,28 @@ namespace Entities.Migrations }); }); + modelBuilder.Entity("Entities.LargeImageEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("Base64") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("largeimages"); + + b.HasData( + new + { + Id = new Guid("70d7aace-13a9-40e1-bd94-99790805f6d0"), + Base64 = "aaa" + }); + }); + modelBuilder.Entity("Entities.RuneEntity", b => { b.Property("Name") @@ -79,11 +106,16 @@ namespace Entities.Migrations .HasMaxLength(500) .HasColumnType("TEXT"); + b.Property("ImageId") + .HasColumnType("TEXT"); + b.Property("RuneFamily") .HasColumnType("INTEGER"); b.HasKey("Name"); + b.HasIndex("ImageId"); + b.ToTable("runes"); b.HasData( @@ -119,11 +151,29 @@ namespace Entities.Migrations b.HasData( new { - Id = new Guid("78729bae-c931-4a75-9662-6754ed8e2ce3"), + Id = new Guid("a5a4f69b-5cbb-48c1-beb4-896bc9171714"), Name = "Runepage_1" }); }); + modelBuilder.Entity("Entities.RunePageRuneEntity", b => + { + b.Property("runepagesId") + .HasColumnType("TEXT"); + + b.Property("runesName") + .HasColumnType("TEXT"); + + b.Property("Category") + .HasColumnType("INTEGER"); + + b.HasKey("runepagesId", "runesName"); + + b.HasIndex("runesName"); + + b.ToTable("RunePageRuneEntity"); + }); + modelBuilder.Entity("Entities.SkillEntity", b => { b.Property("Name") @@ -176,6 +226,9 @@ namespace Entities.Migrations .IsRequired() .HasColumnType("TEXT"); + b.Property("ImageId") + .HasColumnType("TEXT"); + b.Property("Price") .HasColumnType("REAL"); @@ -183,6 +236,8 @@ namespace Entities.Migrations b.HasIndex("ChampionForeignKey"); + b.HasIndex("ImageId"); + b.ToTable("skins"); b.HasData( @@ -204,21 +259,6 @@ namespace Entities.Migrations }); }); - modelBuilder.Entity("RuneEntityRunePageEntity", b => - { - b.Property("runepagesId") - .HasColumnType("TEXT"); - - b.Property("runesName") - .HasColumnType("TEXT"); - - b.HasKey("runepagesId", "runesName"); - - b.HasIndex("runesName"); - - b.ToTable("RuneEntityRunePageEntity"); - }); - modelBuilder.Entity("ChampionEntitySkillEntity", b => { b.HasOne("Entities.ChampionEntity", null) @@ -234,18 +274,25 @@ namespace Entities.Migrations .IsRequired(); }); - modelBuilder.Entity("Entities.SkinEntity", b => + modelBuilder.Entity("Entities.ChampionEntity", b => { - b.HasOne("Entities.ChampionEntity", "Champion") + b.HasOne("Entities.LargeImageEntity", "Image") .WithMany() - .HasForeignKey("ChampionForeignKey") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); + .HasForeignKey("ImageId"); - b.Navigation("Champion"); + b.Navigation("Image"); }); - modelBuilder.Entity("RuneEntityRunePageEntity", b => + modelBuilder.Entity("Entities.RuneEntity", b => + { + b.HasOne("Entities.LargeImageEntity", "Image") + .WithMany() + .HasForeignKey("ImageId"); + + b.Navigation("Image"); + }); + + modelBuilder.Entity("Entities.RunePageRuneEntity", b => { b.HasOne("Entities.RunePageEntity", null) .WithMany() @@ -259,6 +306,23 @@ namespace Entities.Migrations .OnDelete(DeleteBehavior.Cascade) .IsRequired(); }); + + modelBuilder.Entity("Entities.SkinEntity", b => + { + b.HasOne("Entities.ChampionEntity", "Champion") + .WithMany() + .HasForeignKey("ChampionForeignKey") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Entities.LargeImageEntity", "Image") + .WithMany() + .HasForeignKey("ImageId"); + + b.Navigation("Champion"); + + b.Navigation("Image"); + }); #pragma warning restore 612, 618 } } diff --git a/EntityFramework_LoL/Sources/Entities/RuneEntity.cs b/EntityFramework_LoL/Sources/Entities/RuneEntity.cs index a89d1a4..9b1d077 100644 --- a/EntityFramework_LoL/Sources/Entities/RuneEntity.cs +++ b/EntityFramework_LoL/Sources/Entities/RuneEntity.cs @@ -2,6 +2,7 @@ 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; @@ -20,8 +21,12 @@ namespace Entities [Required] public RuneFamily RuneFamily { get; set; } - public ICollection runepages { get; set; } + public ICollection? runepages { get; set; } + public Guid? ImageId { get; set; } + + [ForeignKey("ImageId")] + public LargeImageEntity? Image { get; set; } } } diff --git a/EntityFramework_LoL/Sources/Entities/RunePageRuneEntity.cs b/EntityFramework_LoL/Sources/Entities/RunePageRuneEntity.cs new file mode 100644 index 0000000..a1ad83f --- /dev/null +++ b/EntityFramework_LoL/Sources/Entities/RunePageRuneEntity.cs @@ -0,0 +1,14 @@ +using Shared; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Entities +{ + public class RunePageRuneEntity + { + public Category Category { get; set; } + } +} diff --git a/EntityFramework_LoL/Sources/Entities/SkinEntity.cs b/EntityFramework_LoL/Sources/Entities/SkinEntity.cs index 0baace0..927dca3 100644 --- a/EntityFramework_LoL/Sources/Entities/SkinEntity.cs +++ b/EntityFramework_LoL/Sources/Entities/SkinEntity.cs @@ -28,5 +28,10 @@ namespace Entities [ForeignKey("ChampionForeignKey")] public ChampionEntity Champion { get; set; } + public Guid? ImageId { get; set; } + + [ForeignKey("ImageId")] + public LargeImageEntity? Image { get; set; } + } } diff --git a/EntityFramework_LoL/Sources/EntityFramework/Migrations/20230209124258_myFirstMigration.Designer.cs b/EntityFramework_LoL/Sources/EntityFramework/Migrations/20230209124258_myFirstMigration.Designer.cs new file mode 100644 index 0000000..b64a1d8 --- /dev/null +++ b/EntityFramework_LoL/Sources/EntityFramework/Migrations/20230209124258_myFirstMigration.Designer.cs @@ -0,0 +1,44 @@ +// +using EntityFramework.DbContexts; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace EntityFramework.Migrations +{ + [DbContext(typeof(ChampionDbContext))] + [Migration("20230209124258_myFirstMigration")] + partial class myFirstMigration + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder.HasAnnotation("ProductVersion", "7.0.2"); + + modelBuilder.Entity("EntityFramework.Entities.ChampionEntity", b => + { + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("Bio") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("TEXT"); + + b.Property("Icon") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Name"); + + b.ToTable("champions"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/EntityFramework_LoL/Sources/EntityFramework/Migrations/20230209124258_myFirstMigration.cs b/EntityFramework_LoL/Sources/EntityFramework/Migrations/20230209124258_myFirstMigration.cs new file mode 100644 index 0000000..9f3f929 --- /dev/null +++ b/EntityFramework_LoL/Sources/EntityFramework/Migrations/20230209124258_myFirstMigration.cs @@ -0,0 +1,22 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace EntityFramework.Migrations +{ + /// + public partial class myFirstMigration : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + + } + } +} diff --git a/EntityFramework_LoL/Sources/StubLib/StubData.RunePages.cs b/EntityFramework_LoL/Sources/StubLib/StubData.RunePages.cs index a08a947..169a102 100644 --- a/EntityFramework_LoL/Sources/StubLib/StubData.RunePages.cs +++ b/EntityFramework_LoL/Sources/StubLib/StubData.RunePages.cs @@ -1,5 +1,6 @@ using System; using Model; +using Shared; namespace StubLib { @@ -10,12 +11,12 @@ namespace StubLib private void InitRunePages() { var runePage1 = new RunePage("rune page 1"); - runePage1[RunePage.Category.Major] = runes[0]; - runePage1[RunePage.Category.Minor1] = runes[1]; - runePage1[RunePage.Category.Minor2] = runes[2]; - runePage1[RunePage.Category.Minor3] = runes[3]; - runePage1[RunePage.Category.OtherMinor1] = runes[4]; - runePage1[RunePage.Category.OtherMinor2] = runes[5]; + runePage1[Category.Major] = runes[0]; + runePage1[Category.Minor1] = runes[1]; + runePage1[Category.Minor2] = runes[2]; + runePage1[Category.Minor3] = runes[3]; + runePage1[Category.OtherMinor1] = runes[4]; + runePage1[Category.OtherMinor2] = runes[5]; runePages.Add(runePage1); }