Home:ALL Converter>Can't fill Database with Code using C# asp.net

Can't fill Database with Code using C# asp.net

Ask Time:2018-06-08T22:15:10         Author:Valdrath

Json Formatter

I'm currently having trouble filling my database and I have no idea what I'm missing here.

This is my code as of now:

First my DbInitializer class:

public class DbInitializer
{
    public static void Initialize(MedContext context)
    {
        context.Database.EnsureCreated();

        // Look for any meds.
        if (context.Medicijnen.Any())
        {
            return;   // DB has been seeded
        }

        var categoriën = new Categorie[]
        {
        new Categorie { Omschrijving = "Pijn, koorts, ontsteking" },
        new Categorie { Omschrijving = "Aandoeningen van de luchtwegen" },
        new Categorie { Omschrijving = "Allergie" },
        new Categorie { Omschrijving = "Darmaandoeningen" },
        new Categorie { Omschrijving = "Depressie, psychose" },
        new Categorie { Omschrijving = "Diabetes" },
        new Categorie { Omschrijving = "Hart- en vaataandoeningen" },
        new Categorie { Omschrijving = "Hoest, verkoudheid" },
        new Categorie { Omschrijving = "Infecties" },
        new Categorie { Omschrijving = "Migraine" }

        };
        foreach (Categorie c in categoriën)
        {
            context.Categoriën.Add(c);
        }
        context.SaveChanges();


        var medicijnen = new Medicijn[]
        {
        new Medicijn{Naam="Dafalgan",Vorm="Tabletten",CategorieID=1,Prijs=4.65,Dosis="500mg",AantalEenheden="30",AantalOpVoorraad=5},
        new Medicijn{Naam="Dafalgan Forte",Vorm="Tabletten",CategorieID=1,Prijs=5.05,Dosis="1g",AantalEenheden="16",AantalOpVoorraad=4},
        new Medicijn{Naam="Dafalgan Codeine",Vorm="Bruistabletten",CategorieID=1,Prijs=8.03,Dosis="30mg",AantalEenheden="32",AantalOpVoorraad=5},
        new Medicijn{Naam="Symbicort",Vorm="Inhalatiepoeder",CategorieID=2,Prijs=35.09,Dosis="160mcg/dosis",AantalEenheden="120",AantalOpVoorraad=5},
        new Medicijn{Naam="Zaditen",Vorm="Siroop",CategorieID=2,Prijs=13.70,Dosis="1mg/5ml",AantalEenheden="40ml",AantalOpVoorraad=2},
        new Medicijn{Naam="Singulair",Vorm="Tabletten",CategorieID=2,Prijs=22.22,Dosis="10mg",AantalEenheden="28",AantalOpVoorraad=5},
        new Medicijn{Naam="Reactine",Vorm="Tabletten",CategorieID=3,Prijs=5.00,Dosis="10mg",AantalEenheden="7",AantalOpVoorraad=1},
        new Medicijn{Naam="Zyrtec",Vorm="Tabletten",CategorieID=3,Prijs=5.21,Dosis="10mg",AantalEenheden="7",AantalOpVoorraad=1},
        new Medicijn{Naam="Aerius",Vorm="Tabletten",CategorieID=3,Prijs=13.19,Dosis="5mg",AantalEenheden="30",AantalOpVoorraad=5},
        new Medicijn{Naam="Purgo-Pil",Vorm="Tabletten",CategorieID=4,Prijs=7.10,Dosis="10mg",AantalEenheden="30",AantalOpVoorraad=5},
        new Medicijn{Naam="Duphalac",Vorm="Zakjes", CategorieID=4,Prijs=11.36,Dosis="10g/15ml",AantalEenheden="20",AantalOpVoorraad=5},
        new Medicijn{Naam="Imodium",Vorm="Capsulen",CategorieID=4,Prijs=8.31,Dosis="2mg",AantalEenheden="20",AantalOpVoorraad=5},
        new Medicijn{Naam="Solian",Vorm="Tabletten",CategorieID=5,Prijs=87.12,Dosis="400mg",AantalEenheden="60",AantalOpVoorraad=5},
        new Medicijn{Naam="Abilify",Vorm="Tabletten",CategorieID=5,Prijs=59.77,Dosis="10mg",AantalEenheden="28",AantalOpVoorraad=5},
        new Medicijn{Naam="Leponex",Vorm="Tabletten",CategorieID=5,Prijs=7.07,Dosis="25mg",AantalEenheden="30",AantalOpVoorraad=5},
        new Medicijn{Naam="Amarylle",Vorm="Tabletten",CategorieID=6,Prijs=7.52,Dosis="2mg",AantalEenheden="30",AantalOpVoorraad=5},
        new Medicijn{Naam="Amarylle",Vorm="Tabletten",CategorieID=6,Prijs=9.05,Dosis="3mg",AantalEenheden="30",AantalOpVoorraad=5},
        new Medicijn{Naam="Amarylle",Vorm="Tabletten",CategorieID=6,Prijs=10.59,Dosis="4mg",AantalEenheden="30",AantalOpVoorraad=5},
        new Medicijn{Naam="Lescol",Vorm="Capsulen",CategorieID=7,Prijs=22.58,Dosis="40mg",AantalEenheden="98",AantalOpVoorraad=5},
        new Medicijn{Naam="Lipitor",Vorm="Tabletten",CategorieID=7,Prijs=24.46,Dosis="80mg",AantalEenheden="98",AantalOpVoorraad=5},
        new Medicijn{Naam="Pravasine",Vorm="Tabletten",CategorieID=7,Prijs=39.89,Dosis="40mg",AantalEenheden="98",AantalOpVoorraad=5},
        new Medicijn{Naam="Lysox",Vorm="Zakjes",CategorieID=8,Prijs=7.20,Dosis="200mg",AantalEenheden="30",AantalOpVoorraad=5},
        new Medicijn{Naam="Lysomucil",Vorm="Zakjes",CategorieID=8,Prijs=7.50,Dosis="200mg",AantalEenheden="30",AantalOpVoorraad=5},
        new Medicijn{Naam="Siroxyl",Vorm="Siroop",CategorieID=8,Prijs=4.53,Dosis="100mg/5ml",AantalEenheden="25ml",AantalOpVoorraad=5},
        new Medicijn{Naam="Balsoclase Dextromethorphan",Vorm="Siroop",CategorieID=8,Prijs=6.42,Dosis="15mg/5ml",AantalEenheden="25ml",AantalOpVoorraad=5},
        new Medicijn{Naam="Zovirax Labialis",Vorm="Crème",CategorieID=9,Prijs=8.57,Dosis="50mg/g",AantalEenheden="2g",AantalOpVoorraad=5},
        new Medicijn{Naam="Clamoxyl",Vorm="Capsulen",CategorieID=9,Prijs=6.68,Dosis="500mg",AantalEenheden="16",AantalOpVoorraad=5},
        new Medicijn{Naam="Zovirax",Vorm="Tabletten",CategorieID=9,Prijs=63.92,Dosis="800mg",AantalEenheden="35",AantalOpVoorraad=5},
        new Medicijn{Naam="Augmentin",Vorm="Tabletten",CategorieID=9,Prijs=9.71,Dosis="125mg",AantalEenheden="10",AantalOpVoorraad=5},
        new Medicijn{Naam="Sibelium",Vorm="Tabletten",CategorieID=10,Prijs=19.91,Dosis="10mg",AantalEenheden="28",AantalOpVoorraad=5},
        new Medicijn{Naam="Zomig Instant",Vorm="Tabletten",CategorieID=10,Prijs=42.14,Dosis="2,5mg",AantalEenheden="6",AantalOpVoorraad=5},
        new Medicijn{Naam="Zomig Instant",Vorm="Tabletten",CategorieID=10,Prijs=66.96,Dosis="2,5mg",AantalEenheden="12",AantalOpVoorraad=5}


        };
        foreach (Medicijn m in medicijnen)
        {
            context.Medicijnen.Add(m);
        }
        context.SaveChanges();


        var klanten = new Klant[]
        {
        new Klant{Voornaam="Jorgi",Achternaam="Leus",Adres="Jorgilaan 42",Telefoon="014 31 74 74"},
        new Klant{Voornaam="Jelmar",Achternaam="Van Aert",Adres="Jellylane 24",Telefoon="014 37 79 74"},
        new Klant{Voornaam="Krikke",Achternaam="Van Doren",Adres="Krikstraat 7",Telefoon="014 58 02 01"},
        new Klant{Voornaam="Jozef",Achternaam="Den Heilige",Adres="Kerkdreef 3",Telefoon="013 02 45 78"},
        new Klant{Voornaam="Japiano",Achternaam="Music",Adres="Jamlane 1",Telefoon="014 21 23 65"},
        new Klant{Voornaam="Jonas",Achternaam="De Vlaai",Adres="Taartstraat 66",Telefoon="014 89 00 54"}

        };
        foreach (Klant k in klanten)
        {
            context.Klanten.Add(k);
        }
        context.SaveChanges();


        var bestellingen = new Bestelling[]
        {
        new Bestelling{MedicijnID=1,KlantID=1,BestellingsDatum=DateTime.Parse("2017-09-01")},
        new Bestelling{MedicijnID=3,KlantID=1,BestellingsDatum=DateTime.Parse("2017-09-01")}

        };
        foreach (Bestelling b in bestellingen)
        {
            context.Bestellingen.Add(b);
        }
        context.SaveChanges();

    }
}

My context class:

public class MedContext: DbContext
{
    public MedContext(DbContextOptions<MedContext> options) : base(options)
    {
    }

    public virtual DbSet<Medicijn> Medicijnen { get; set; }
    public virtual DbSet<Klant> Klanten { get; set; }
    public virtual DbSet<Bestelling> Bestellingen { get; set; }
    public virtual DbSet<Categorie> Categoriën { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {

        modelBuilder.Entity<Medicijn>(entity =>
        {
            entity.HasKey(e => e.MedicijnID);

            entity.Property(e => e.MedicijnID).HasColumnName("MedicijnID");

            entity.Property(e => e.Naam).HasColumnName("Naam")
                .IsRequired();

            entity.Property(e => e.Vorm).HasColumnName("Vorm")
                .IsRequired();

            entity.Property(e => e.CategorieID).HasColumnName("CategorieID")
                .IsRequired();

            entity.Property(e => e.AantalEenheden).HasColumnName("Aantal eenheden")
                .IsRequired();

            entity.Property(e => e.AantalOpVoorraad).HasColumnName("Aantal op voorraad")
                .IsRequired();

            entity.Property(e => e.Prijs).HasColumnName("Prijs")
                .IsRequired();

            entity.HasOne(d => d.Categorie)
                .WithMany(p => p.Medicijnen)
                .HasForeignKey(d => d.CategorieID)
                .OnDelete(DeleteBehavior.ClientSetNull)
                .HasConstraintName("FK_Medicijnen_Categoriën");

            entity.ToTable("Medicijnen");
        });
        modelBuilder.Entity<Categorie>(entity =>
        {
            entity.HasKey(e => e.CategorieID);

            entity.Property(e => e.CategorieID).HasColumnName("CategorieID")
                .IsRequired();

            entity.Property(e => e.Omschrijving).HasColumnName("Omschrijving")
                .IsRequired();

            entity.ToTable("Categoriën");
        });


        modelBuilder.Entity<Klant>(entity =>
        {
            entity.HasKey(e => e.KlantID);

            entity.Property(e => e.KlantID).HasColumnName("KlantID")
                .IsRequired();

            entity.Property(e => e.Voornaam).HasColumnName("Voornaam")
                .IsRequired();

            entity.Property(e => e.Achternaam).HasColumnName("Achternaam")
                .IsRequired();

            entity.Property(e => e.Adres).HasColumnName("Adres")
                .IsRequired();

            entity.Property(e => e.Telefoon).HasColumnName("Telefoon");

            entity.ToTable("Klanten");

        });


        modelBuilder.Entity<Bestelling>(entity =>
        {
            entity.HasKey(e => e.BestellingsID);

            entity.Property(e => e.BestellingsID).HasColumnName("BestellingsID")
                .IsRequired();

            entity.Property(e => e.BestellingsDatum).HasColumnName("Bestellingsdatum")
                .IsRequired();


            entity.HasOne(d => d.Klant)
                .WithMany(p => p.Bestellingen)
                .HasForeignKey(d => d.KlantID)
                .OnDelete(DeleteBehavior.ClientSetNull)
                .HasConstraintName("FK_Bestellingen_Klanten");

            entity.ToTable("Bestellingen");

        });
    }
}

It actually creates the tables everytime, including the right column headers, yet the only thing I'm getting is this:

Null Database

Please help me figure this out, or let me know if there's any more code snippets you need to get a clearer view of the situation. I'm new to programming so I don't exactly know how everything is connected. Thanks in advance!

Author:Valdrath,eproduced under the CC 4.0 BY-SA copyright license with a link to the original source and this disclaimer.
Link to original article:https://stackoverflow.com/questions/50762613/cant-fill-database-with-code-using-c-sharp-asp-net
Ajay Gupta :

Try setting the initializer class as:\n\npublic class DbInitializer: DropCreateDatabaseAlways<MedContext>\n{\n protected override void Seed(MedContext context)\n {\n //add the implementation here\n }\n}\n\n\nThen call the initialize method in the Application_Start event\n\nDatabase.SetInitializer<MedContext>(new DbInitializer());\n",
2018-06-08T15:32:17
Valdrath :

The problem here was the \"ë\" char, when I changed this to \"e\", everything worked just fine, thanks everyone for your help :) .",
2018-06-10T21:05:07
yy