簡體   English   中英

SqlException:無法為表中的標識列插入顯式值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM