C#, Asp.Net, .Net Core
Entity Framework Savechanges İşleminde Objectstatemanager Problemi
Entity Framework Savechanges İşleminde Objectstatemanager Problemi
-
ardarda birden fazla veri eklediğimde
The changes to the database were committed successfully, but an error occurred while updating the object context. The ObjectContext might be in an inconsistent state. Inner exception message: AcceptChanges cannot continue because the object's key values conflict with another object in the ObjectStateManager. Make sure that the key values are unique before calling AcceptChanges.
şeklinde bi hata alıyorum biraz bekleyip ekletince çıkmıyor genellikle
BaseService'im aşağıdaki gibi
public void Delete(T entity) { ObjectSet.DeleteObject(entity); Context.SaveChanges(); } public void Add(T entity) { ObjectSet.AddObject(entity); Context.SaveChanges(); } public void Attach(T entity) { ObjectSet.Attach(entity); Context.SaveChanges(); } public void Update(Expression<Func> where, T entity) { var ent = First(where); ent = entity; Context.SaveChanges(); }
problem server kaynaklımı yoksa modelden mi kaynaklanıyor tam anlayamadım arada bir hata çıkmıyor
yardımlarınız için şimdiden teşekkürler :)
-
şu link işini görmeli,
http://stackoverflow.com/questions/1008582/invalidoperationexception-when-calling-savechanges-in-net-entity-framework
-
hatadan anladığım kadarıyla şöyle bir şey olabilir. bir dictionary yapın var, orada key değerinin uniqe yani benzersiz olması gerek, senin eklediğin veriler aynı key e sahipse bu hatayı verebilir yani
Dictionary<string,string> k = new ....
k.Add("a", "12345");
k.Add("b", "1234546");
k.Add("c","12345"); //value aynı olsa da problem yok, key in farklı olması gerek
k.Add("a", "sfgh"); burada hata vardır, çünkü a keyi uniqe olmalıdır.
gibi bir hata olabilir hocam?
-
SharpShooter bunu yazdı:
-----------------------------şu link işini görmeli,
http://stackoverflow.com/questions/1008582/invalidoperationexception-when-calling-savechanges-in-net-entity-framework
-----------------------------hacı gördüm onu savechangesin aldığı tüm parametreleri denedim olmadı be
-
unbalanced bunu yazdı:
-----------------------------hatadan anladığım kadarıyla şöyle bir şey olabilir. bir dictionary yapın var, orada key değerinin uniqe yani benzersiz olması gerek, senin eklediğin veriler aynı key e sahipse bu hatayı verebilir yani
Dictionaryk = new ....
k.Add("a", "12345");
k.Add("b", "1234546");
k.Add("c","12345"); //value aynı olsa da problem yok, key in farklı olması gerek
k.Add("a", "sfgh"); burada hata vardır, çünkü a keyi uniqe olmalıdır.
gibi bir hata olabilir hocam?
-----------------------------eklediğim veriler primary key aynı id yi alsa dbyi geçemez ama dbye ekliyor veriyi fakat exception fırlatıyor
-
gözden kaçırdığın bir şey olmalı o zaman hocam. çünkü exception uniqe ile ilgili bir hatayı gösteriyor.. biraz bekletip eklediğinde problem yok demişsin, burada tam olarak ne demek istemişsin
-
unbalanced bunu yazdı:
-----------------------------gözden kaçırdığın bir şey olmalı o zaman hocam. çünkü exception uniqe ile ilgili bir hatayı gösteriyor.. biraz bekletip eklediğinde problem yok demişsin, burada tam olarak ne demek istemişsin
-----------------------------ya Service.aspx diye bişey yazdım jquery ile inputtan sürekli ona veri gönderiyorum çok sık gönderince hata veriyor.
bu şekilde get ediyorum diğer taraftada ekletiyorum veriyi.
$(document).ready(function () { $("#btnSendPM").click(function () { var tmtext = tinyMCE.activeEditor.getContent(); //var encodedMsg = $.base64.encode(tmtext); $.get('Service.aspx?action=SendPM&toid=<% Response.Write(Request.QueryString["toid"]); %>&msg=' + tmtext); $('#pmTable').append('<tr><td><% Response.Write("Today " + DateTime.Now.ToString("hh:mm")); %></td><td><% Response.Write(UserName); %></td><td>' + tmtext + '</td></tr>'); tinyMCE.activeEditor.setContent(""); }); });
-
hımm alakasız gibi geliyor ama çok hızlı gönderme yerine bir bekletme kodu yazsan ne olur?
ikinci olark get yaptırmadan rastgele verileri kaydetmeyi dener misin
-
unbalanced bunu yazdı:
-----------------------------hımm alakasız gibi geliyor ama çok hızlı gönderme yerine bir bekletme kodu yazsan ne olur?
ikinci olark get yaptırmadan rastgele verileri kaydetmeyi dener misin
-----------------------------çok farklı bi yerde basit bi formdan ardarda 2 veri gönderdim yine patladı
-
benim hatadan anladığım kadarıyla, bir objyi kayıt ettiriyorsun sonra diğer kayıtta exception fırlatılıyor çünkü son kayıt ettirmeye çalıştığın objenin keyi, daha önce kayıt ettirdiğin objenin keyiyle eşit.
iki tane veri ve farklı keylerde denemeye çalış. ayrıca db de primary key in auto increase olduğunu da teyit et
-
öyle birşey mümkün olamaz zaten primary keyi set etmeden gönderiyorum
oracle dbye yazdığım trigger sequenceden id atamasını yapıyor kendisi
yani veriyi ekliyor fakat ekrana exception fırlatıyor