SqlException: невозможно вставить явное значение для столбца идентификаторов в таблице - PullRequest
0 голосов
/ 09 июня 2018

Сначала мне жаль, что я использую свой родной язык в Code, но это мой университетский проект, и наш руководитель проекта приказал нам писать так.Я работаю над проектом базы данных, используя Entity Framework и C #.Короче говоря, я создал классы "Osoba" и "Klient", которые наследуются от "Osoba".Проблема заключается в том, что при попытке добавить новый «Клиент» в базу данных я по-прежнему получаю сообщение об ошибке:

System.Data.Entity.Infrastructure.DbUpdateException: «Произошла ошибка при обновлениизаписи.Подробности см. Во внутреннем исключении. ”

SqlException: Невозможно вставить явное значение для столбца идентификаторов в таблице« Клиент », когда для параметра IDENTITY_INSERT установлено значение OFF.

Я исследовал подобные проблемыв сети, но все они появлялись из-за «жесткого кодирования» 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;
    }
}

Класс клиента:

[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; }
} 

И, наконец, вот как я добавляю новый клиент в базу данных:

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();
    }

1 Ответ

0 голосов
/ 10 июня 2018

Итак, окончательным решением для меня было удаление всех миграций в моем проекте.После удаления моей базы данных, удаления всех миграций, а затем воссоздания базы данных без каких-либо миграций в моем проекте, это наконец заработало.Спасибо за все ваши предложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...