From 035415dcaa9f293a76d490c9780f8a5ec60036cb Mon Sep 17 00:00:00 2001 From: Tobi Date: Wed, 15 May 2019 13:26:53 +0200 Subject: [PATCH] :constuction: ERD mit Code-First Implementation begonnen --- .../20190515103649_TestCreate1.Designer.cs | 85 +++++++++++++++++++++ .../Migrations/20190515103649_TestCreate1.cs | 82 ++++++++++++++++++++ .../Migrations/EVAContextModelSnapshot.cs | 83 ++++++++++++++++++++ Backend/EVABackend/EVABackend/Models/EVAContext.cs | 74 ++++++++++++++++++ Backend/EVABackend/EVABackend/eva.db | Bin 0 -> 36864 bytes 5 files changed, 324 insertions(+) create mode 100644 Backend/EVABackend/EVABackend/Migrations/20190515103649_TestCreate1.Designer.cs create mode 100644 Backend/EVABackend/EVABackend/Migrations/20190515103649_TestCreate1.cs create mode 100644 Backend/EVABackend/EVABackend/Migrations/EVAContextModelSnapshot.cs create mode 100644 Backend/EVABackend/EVABackend/Models/EVAContext.cs create mode 100644 Backend/EVABackend/EVABackend/eva.db diff --git a/Backend/EVABackend/EVABackend/Migrations/20190515103649_TestCreate1.Designer.cs b/Backend/EVABackend/EVABackend/Migrations/20190515103649_TestCreate1.Designer.cs new file mode 100644 index 0000000..5e44b06 --- /dev/null +++ b/Backend/EVABackend/EVABackend/Migrations/20190515103649_TestCreate1.Designer.cs @@ -0,0 +1,85 @@ +// +using EVABackend.Models; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +namespace EVABackend.Migrations +{ + [DbContext(typeof(EVAContext))] + [Migration("20190515103649_TestCreate1")] + partial class TestCreate1 + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "2.1.8-servicing-32085"); + + modelBuilder.Entity("EVABackend.Models.Kurs", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Kuendigungsfrist"); + + b.Property("Laufzeit"); + + b.Property("Name") + .IsRequired(); + + b.Property("Preis"); + + b.Property("UnterrichtsTyp"); + + b.HasKey("Id"); + + b.ToTable("Kurse"); + }); + + modelBuilder.Entity("EVABackend.Models.KursSchueler", b => + { + b.Property("SchuelerId"); + + b.Property("KursId"); + + b.HasKey("SchuelerId", "KursId"); + + b.HasIndex("KursId"); + + b.ToTable("KursSchueler"); + }); + + modelBuilder.Entity("EVABackend.Models.Schueler", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Name") + .IsRequired(); + + b.Property("Vorname") + .IsRequired(); + + b.HasKey("Id"); + + b.ToTable("Schueler"); + }); + + modelBuilder.Entity("EVABackend.Models.KursSchueler", b => + { + b.HasOne("EVABackend.Models.Kurs", "Kurs") + .WithMany("KursSchueler") + .HasForeignKey("KursId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("EVABackend.Models.Schueler", "Schueler") + .WithMany("KursSchueler") + .HasForeignKey("SchuelerId") + .OnDelete(DeleteBehavior.Cascade); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Backend/EVABackend/EVABackend/Migrations/20190515103649_TestCreate1.cs b/Backend/EVABackend/EVABackend/Migrations/20190515103649_TestCreate1.cs new file mode 100644 index 0000000..2db1801 --- /dev/null +++ b/Backend/EVABackend/EVABackend/Migrations/20190515103649_TestCreate1.cs @@ -0,0 +1,82 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +namespace EVABackend.Migrations +{ + public partial class TestCreate1 : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "Kurse", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Sqlite:Autoincrement", true), + Name = table.Column(nullable: false), + Preis = table.Column(nullable: false), + Laufzeit = table.Column(nullable: false), + Kuendigungsfrist = table.Column(nullable: false), + UnterrichtsTyp = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Kurse", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Schueler", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Sqlite:Autoincrement", true), + Name = table.Column(nullable: false), + Vorname = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Schueler", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "KursSchueler", + columns: table => new + { + SchuelerId = table.Column(nullable: false), + KursId = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_KursSchueler", x => new { x.SchuelerId, x.KursId }); + table.ForeignKey( + name: "FK_KursSchueler_Kurse_KursId", + column: x => x.KursId, + principalTable: "Kurse", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_KursSchueler_Schueler_SchuelerId", + column: x => x.SchuelerId, + principalTable: "Schueler", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateIndex( + name: "IX_KursSchueler_KursId", + table: "KursSchueler", + column: "KursId"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "KursSchueler"); + + migrationBuilder.DropTable( + name: "Kurse"); + + migrationBuilder.DropTable( + name: "Schueler"); + } + } +} diff --git a/Backend/EVABackend/EVABackend/Migrations/EVAContextModelSnapshot.cs b/Backend/EVABackend/EVABackend/Migrations/EVAContextModelSnapshot.cs new file mode 100644 index 0000000..7180a44 --- /dev/null +++ b/Backend/EVABackend/EVABackend/Migrations/EVAContextModelSnapshot.cs @@ -0,0 +1,83 @@ +// +using EVABackend.Models; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +namespace EVABackend.Migrations +{ + [DbContext(typeof(EVAContext))] + partial class EVAContextModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "2.1.8-servicing-32085"); + + modelBuilder.Entity("EVABackend.Models.Kurs", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Kuendigungsfrist"); + + b.Property("Laufzeit"); + + b.Property("Name") + .IsRequired(); + + b.Property("Preis"); + + b.Property("UnterrichtsTyp"); + + b.HasKey("Id"); + + b.ToTable("Kurse"); + }); + + modelBuilder.Entity("EVABackend.Models.KursSchueler", b => + { + b.Property("SchuelerId"); + + b.Property("KursId"); + + b.HasKey("SchuelerId", "KursId"); + + b.HasIndex("KursId"); + + b.ToTable("KursSchueler"); + }); + + modelBuilder.Entity("EVABackend.Models.Schueler", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Name") + .IsRequired(); + + b.Property("Vorname") + .IsRequired(); + + b.HasKey("Id"); + + b.ToTable("Schueler"); + }); + + modelBuilder.Entity("EVABackend.Models.KursSchueler", b => + { + b.HasOne("EVABackend.Models.Kurs", "Kurs") + .WithMany("KursSchueler") + .HasForeignKey("KursId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("EVABackend.Models.Schueler", "Schueler") + .WithMany("KursSchueler") + .HasForeignKey("SchuelerId") + .OnDelete(DeleteBehavior.Cascade); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Backend/EVABackend/EVABackend/Models/EVAContext.cs b/Backend/EVABackend/EVABackend/Models/EVAContext.cs new file mode 100644 index 0000000..793afd8 --- /dev/null +++ b/Backend/EVABackend/EVABackend/Models/EVAContext.cs @@ -0,0 +1,74 @@ +using Microsoft.EntityFrameworkCore; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace EVABackend.Models +{ + public class EVAContext : DbContext + { + public DbSet Schueler { get; set; } + public DbSet Kurse { get; set; } + public DbSet KursSchueler { get; set; } + + protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) + { + optionsBuilder.UseSqlite("Data Source=eva.db"); + } + + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + modelBuilder.Entity() + .HasKey(c => new { c.SchuelerId, c.KursId }); + + modelBuilder.Entity() + .HasOne(c => c.Schueler) + .WithMany(c => c.KursSchueler) + .HasForeignKey(c => c.SchuelerId); + + modelBuilder.Entity() + .HasOne(c => c.Kurs) + .WithMany(c => c.KursSchueler) + .HasForeignKey(c => c.KursId); + } + } + + public class Schueler + { + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; set; } + [Required] + public string Name { get; set; } + [Required] + public string Vorname { get; set; } + public virtual ICollection KursSchueler { get; set; } + } + + public class Kurs + { + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; set; } + [Required] + public string Name { get; set; } + public decimal Preis { get; set; } + public int Laufzeit { get; set; } + public int Kuendigungsfrist { get; set; } + public UnterrichtTyp UnterrichtsTyp { get; set; } + public virtual ICollection KursSchueler { get; set; } + } + + public class KursSchueler + { + public int SchuelerId { get; set; } + public int KursId { get; set; } + public virtual Schueler Schueler { get; set; } + public virtual Kurs Kurs { get; set; } + } + + public enum UnterrichtTyp + { + Einzel, Gruppe + } +} diff --git a/Backend/EVABackend/EVABackend/eva.db b/Backend/EVABackend/EVABackend/eva.db new file mode 100644 index 0000000000000000000000000000000000000000..3cfb6093a4c380b21d1e26091222e9b0bdee116e GIT binary patch literal 36864 zcmeI)-%i?490%}L6p+Z+u6i?*vnDJW{{(Ojy|crkBVb{rI?S>V21jh7Fx#@s-RYJ+ zfiJO(C3}!v?Gg4AyWDAQwM8&nb~DNMgod`K=XcKUb528we`+tvhRw)9&pdA0WJS0y zh@!ATh#&|Pe4FN*U#9rZq<_HQ#lZfk-3ej&;kRV!mk>`p67Ky-eNBEzzMQ#8T+F=U zCr}^&0SG_<0uX=z1pYsPlXy&8Pm5;{jBcB~FV-8SzG>B3hkbU$O!uJJ4xXAWXjIWD zDXN>aPUPVYWKvOy9Bd|&Irq5OmghfiMq^SsEq*T9%{NCZcv)~i=Jlj2&&u>hv}A(t zBKsrdaruyRx=l5rR&=87mdlIYHBQi5>I)UMrfUjsP2_4Rl)p@>T5(6w_DPBE^9%yL zEnbeu$;ay_7-uUS#|_FnO_^*}G+NwNy`bLk=7~nPs7BQStzE`u4w}<}qq#}Tl(QF< zT0z;Qf6%2r)`q|15QKXU)P#HYD@G3>nV8SVqEaa>3hu(OPLB9BN-L}!`cRSXB zX;`;hx!bjwX&S9V+tN?p-i*lU&+1}K%IC%NiVM|f(5)S#V>WH0*R`JW=sojv=*fvN z-?xYYG^-=?9kH@ z{y`IWK5UYF6I0&>{z8EO1Rwwb2tWV=5P$##AOHafK;RAtL5C8mA~{DlGm2tWV=5P$##AOHaf zKmY;|fWVyM^)00bZa0SG_<0uX=z1Rwwb2#mh~p8v;xj*%e* zAOHafKmY;|fB*y_009U0uX=z1Rwwb2tWV=5P-mV3*h;Gyyq9$ YK>z{}fB*y_009U<00Izz00bO?-x0&;2LJ#7 literal 0 HcmV?d00001