起初我很抱歉在Code中使用我的母语,但这是我的大学项目,我们的项目负责人命令我们这样写。 我正在使用Entity Framework和C#开发数据库项目。 简而言之,我创建了一个名为“Osoba”和“Klient”类的类,它继承自“Osoba”。 问题是,当我尝试向数据库添加新的“Klient”时,我仍然会收到如下错误:
System.Data.Entity.Infrastructure.DbUpdateException:“更新条目时发生错误。有关详细信息,请参阅内部异常。“
SqlException:当IDENTITY_INSERT设置为OFF时,无法在表'Klient'中为identity列插入显式值。
我在网上研究过类似的问题,但是所有这些问题都是因为在向表中添加新对象时出现“硬编码”ID而出现的。我实际上并没有这样做。
这是Osoba课程:
[Table("Osoba")]
public class Osoba
{
public int ID { get; set; }
public string Imie { get; set; }
public string Nazwisko { get; set; }
public string Telefon { get; set; }
public string Adres { get; set; }
public string Mail { get; set; }
public int IloscTransakcji { get; set; }
public string Typ { get; set; }
public override string ToString()
{
return "Imie: " + Imie + "\t Nazwisko: " + Nazwisko + "\t Adres: " + Adres;
}
}
Klient类:
[Table("Klient")]
public class Klient: Osoba
{
public int ID { get; set; }
public string Pracownik { get; set; }
public int Sprzedane { get; set; }
public int Kupione { get; set; }
public string Preferencje { get; set; }
public override string ToString()
{
return "Obslugujacy pracownik: " + Pracownik + "\t Sprzedane: " + Sprzedane.ToString() + "\t Kupione: " + Kupione.ToString();
}
}
我的数据库背景:
public class BazyDanychContext : DbContext
{
public BazyDanychContext() : base("ProjektBD8")
{
}
public DbSet<Osoba> Osoba { get; set; }
public DbSet<Klient> Klient { get; set; }
public DbSet<Pracownik> Pracownik { get; set; }
public DbSet<Nieruchomosc> Nieruchomosc { get; set; }
public DbSet<Biuro> Biuro { get; set; }
public DbSet<Dom> Dom { get; set; }
public DbSet<Grunt> Grunt { get; set; }
public DbSet<Hala> Hala { get; set; }
public DbSet<Mieszkanie> Mieszkanie { get; set; }
public DbSet<Spotkanie> Spotkanie { get; set; }
public DbSet<Umowa> Umowa { get; set; }
}
最后,我将如何将新的Klient添加到数据库中:
private void KlientAdd_Click(object sender, RoutedEventArgs e)
{
using (var ctx = new BazyDanychContext())
{
Klient tmp = new Klient { Imie = KlientImie.Text, Nazwisko = KlientNazwisko.Text, Telefon = KlientTelefon.Text, Adres = KlientAdres.Text, Mail = KlientMail.Text, IloscTransakcji = Int32.Parse(KlientIloscTransakcji.Text), Typ = "Klient" , Pracownik = KlientPracownik.Text, Sprzedane = Int32.Parse(KlientSprzedane.Text), Kupione = Int32.Parse(KlientKupione.Text), Preferencje = KlientPreferencje.Text };
ctx.Osoba.Add(tmp);
ctx.SaveChanges();
}
InitTabs();
}
答案 0 :(得分:0)
因此,对我来说,最终解决方案是删除项目中的所有迁移。删除我的数据库后,删除所有迁移,然后重新创建数据库而不在我的项目中进行任何迁移它最终工作。谢谢你的所有建议。