[英]SqlException: Cannot insert explicit value for identity column in table [Table name] when IDENTITY_INSERT is set to OFF
[英]SqlException: Cannot insert explicit value for identity column in table
起初,我很抱歉在Code中使用本機語言,但這是我的University項目,而我們的項目負責人命令我們這樣寫。 我正在使用Entity Framework和C#進行數據庫項目。 簡而言之,我創建了一個名為“ Osoba”和“ Klient”的類,它們是從“ Osoba”繼承的。 問題是,當我嘗試向數據庫中添加新的“ Klient”時,仍然出現如下錯誤:
System.Data.Entity.Infrastructure.DbUpdateException:“更新條目時發生錯誤。 有關詳細信息,請參見內部異常。”
SqlException:當IDENTITY_INSERT設置為OFF時,無法為表'Klient'中的標識列插入顯式值。
我已經研究了Web中的類似問題,但是所有這些問題都是由於在向表中添加新對象時出現“硬編碼” ID而引起的,而我實際上並未這樣做。
這是奧索巴課程:
[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;
}
}
克利恩特類:
[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();
}
因此,對我來說,最終的解決方案是刪除項目中的所有遷移 。 刪除數據庫后,刪除所有遷移,然后重新創建數據庫,而在我的項目中沒有任何遷移,它終於可以工作了。 感謝您的所有建議。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.