мы работаем над базой данных для нашего учебного проекта и у нас возникла непредвиденная ошибка при добавлении данных в таблицу.
using (var ctx = new BazyDanychContext())
{
Osoba tmpTask = new Osoba { Imie = ImieLbl.Text, Nazwisko = NazwiskoLbl.Text, Telefon = TelefonLbl.Text, Adres = AdresLbl.Text, Mail = MailLbl.Text, IloscTransakcji = Int32.Parse(IloscLbl.Text), Typ = TypList.Text };
ctx.Osoba.Add(tmpTask);
ctx.SaveChanges();
}
Мы также попытались:
Чтобы добавить новые записи, используя ExecuteSqlCommand, который работал просто отлично
ctx.Database.ExecuteSqlCommand("INSERT INTO dbo.Osoba VALUES('0','jan','nowak', '222222', 'adres', 'mail', '2', 'osoba')");
Использование ctx.Entry(tmpTask).State = System.Data.Entity.EntityState.Added;
(а также .Modified
)
Ввод значений вручную (как в строке ExecuteSqlCommand)
Независимо от того, что мы делаем, ctx.SaveChanges()
дает нам
OptimisticConcurrencyException: Store update, insert, or delete statement affected an unexpected number of rows (0).
Наши классы:
namespace BazyDanych
{
public class BazyDanychContext : DbContext
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
base.OnModelCreating(modelBuilder);
}
public BazyDanychContext() : base("ProjektBD")
{
Database.SetInitializer(new SQLdb());
}
public DbSet<Osoba> Osoba { get; set; }
}
}
namespace BazyDanych
{
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 ID: " + ID.ToString();
}
}
}
Структура таблицы базы данных выглядит следующим образом:
ID (int, null)
Imie (text, null)
Nazwisko (text, null)
Telefon (text, null)
Adres (text, null)
Mail (text, null)
IloscTransakcji (int, null)
Typ (text, null)