2016-10-30 2 views
4

У меня нет проблем при вставке в базу данных, но когда я сделал процесс обновления, возникли следующие проблемы.EF InsertOrUpdate Proble

Дополнительная информация: Привязка объекта типа 'kgSoft_Pro.ORM.Models.StokKarti' не удалась, поскольку другой объект того же типа уже имеет такое же значение первичного ключа. Это может произойти при использовании метода «Прикрепить» или установки состояния объекта в «Без изменений» или «Модифицировано», если любые объекты на графике имеют конфликтующие значения ключей. Это может быть связано с тем, что некоторые объекты являются новыми и еще не получили значения ключей базы данных. В этом случае используйте метод «Добавить» или «Добавленное» состояние объекта для отслеживания графика, а затем, если необходимо, установите состояние не новых объектов «Без изменений» или «Модифицировано».

AddOrUpdate Код

public int InsertOrUpdate(T Entity) 
{ 
    var type = Entity.GetType(); 
    var property = type.GetProperty("id"); 
    var propValue = (int)property.GetValue(Entity); 
    dbContext.Entry(Entity).State = propValue > 0 ? EntityState.Modified : EntityState.Added; 
    return Save(); 
} 

Сохранить коды

StokKarti stok = new StokKarti(); 
stok.Adi = txtStokAdi.Text; 
stok.AlisFiyati = decimal.Parse(clcAlisFiyati.EditValue.ToString()); 
stok.StokKodu = btnStokKodu.EditValue.ToString(); 
stok.Barkod = txtBarkod.Text; 
stok.DigerSatis = decimal.Parse(clcDigerFiyat.EditValue.ToString()); 
stok.GrupKod = lkGrupKodlari.EditValue.ToString(); 
stok.hizlisatis = chkSatisEkrani.Checked; 
stok.PerakendeSatis = decimal.Parse(clcPerakende.EditValue.ToString()); 
stok.ToptanSatis =decimal.Parse(clcToptanFiyat.EditValue.ToString()); 
stok.RiskLimiti = (int?)txtRiskLimiti.EditValue ?? 0; 
stok.KdvOrani = (int)lkKdvOran.EditValue; 
stok.Birim = lkBirim.EditValue.ToString(); 
stok.Marka = lkMarkasi.EditValue.ToString(); 
stok.id = id; 
sk.InsertOrUpdate(stok); 
+0

Сущность Framework 6, это свойство, к сожалению, нет. –

+0

Откуда берется 'dbContext'? Каков его жизненный цикл? –

+0

Я решил проблему. [code] dbContext.DbSet () .AddOrUpdate (Entity) [код] –

ответ

3
dbContext.DbSet<T>().AddOrUpdate(Entity) 

проблема решена

Смежные вопросы