Сначала мне жаль, что я использую свой родной язык в 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();
}