我目前无法填写数据库,我不知道我在这里缺少什么。
这是我现在的代码:
首先是我的DbInitializer类:
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();
}
}
我的上下文类:
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");
});
}
}
它实际上每次创建表格,包括正确的列标题,但我唯一得到的是:
请帮我解决这个问题,或者让我知道是否还需要更多的代码段来更清楚地了解情况。我是编程新手,所以我不知道所有内容是如何连接的。提前谢谢!
答案 0 :(得分:0)
尝试将初始化类设置为:
public class DbInitializer: DropCreateDatabaseAlways<MedContext>
{
protected override void Seed(MedContext context)
{
//add the implementation here
}
}
然后在Application_Start事件中调用initialize方法
Database.SetInitializer<MedContext>(new DbInitializer());
答案 1 :(得分:0)
这里的问题是“ë”字符,当我将其更改为“e”时,一切正常,感谢大家的帮助:)。
答案 2 :(得分:-1)
添加新条目时,请尝试使用AddOrUpdate函数。我之前遇到一个问题,在添加客户时,它没有给我任何错误,它做了正确的过程。添加AddOrUpdate时,它工作正常。
context.Categoriën.AddOrUpdate(c);