首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无法使用C# asp.net在数据库中填充代码

无法使用C# asp.net在数据库中填充代码
EN

Stack Overflow用户
提问于 2018-06-08 22:15:10
回答 3查看 95关注 0票数 0

我目前在填充我的数据库时遇到了问题,我不知道我在这里遗漏了什么。

这是我现在的代码:

首先是我的DbInitializer类:

代码语言:javascript
复制
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();

    }
}

我的context类:

代码语言:javascript
复制
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");

        });
    }
}

它实际上每次都会创建表,包括正确的列标题,但我得到的唯一结果是:

请帮助我弄清楚这一点,或者让我知道如果您需要更多的代码片段来更清楚地了解情况。我是编程新手,所以我不太清楚所有东西是如何联系在一起的。提前感谢!

EN

回答 3

Stack Overflow用户

发布于 2018-06-08 23:32:17

尝试将初始化器类设置为:

代码语言:javascript
复制
public class DbInitializer: DropCreateDatabaseAlways<MedContext>
{
    protected override void Seed(MedContext context)
    {
         //add the implementation here
    }
}

然后在Application_Start事件中调用initialize方法

代码语言:javascript
复制
Database.SetInitializer<MedContext>(new DbInitializer());
票数 0
EN

Stack Overflow用户

发布于 2018-06-11 05:05:07

这里的问题是"ë“字符,当我将其更改为"e”时,一切工作正常,感谢大家的帮助:)。

票数 0
EN

Stack Overflow用户

发布于 2018-06-08 22:19:46

请尝试在添加新条目时改用AddOrUpdate函数。我以前遇到过一个问题,在添加客户时,它没有给我任何错误,并且它执行了正确的过程。添加AddOrUpdate时,它工作得很好。

代码语言:javascript
复制
context.Categoriën.AddOrUpdate(c);
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50762613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档