首先,我很抱歉在Code中使用我的母语,但这是我的大学项目,我们的项目负责人命令我们这样写。我正在使用实体框架和C#进行数据库项目的工作。简而言之,我创建了名为"Osoba“的类和继承自"Osoba”的"Klient“类。问题是,当我试图添加新的"Klient“到数据库时,我仍然得到如下错误:
System.Data.Entity.Infrastructure.DbUpdateException:“更新条目时出错。有关详细信息,请参阅内部异常。“
SqlException:当IDENTITY_INSERT设置为OFF时,无法为表'Klient‘中的标识列插入显式值。
我在web上也研究过类似的问题,但它们都是因为在向表中添加新对象时“硬编码”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();
}
发布于 2018-06-10 05:26:24
所以,对我来说,最后的解决方案是删除我项目中的所有迁移。删除我的数据库后,删除所有迁移,然后在没有任何迁移的情况下在我的项目中重新创建数据库,它终于起作用了。谢谢你的所有建议。
https://stackoverflow.com/questions/50776986
复制相似问题