C # إضافة كائن جديد إلى عائدات سياق كائن "حدث خطأ أثناء تحديث الإدخالات"، الإدخال المكرر للمفتاح الأساسي

StackOverflow https://stackoverflow.com/questions/1193881

سؤال

أواجه مشكلة في محاولة إضافة كائن إلى سياق كائن في إطار الكيان.

هنا هو الرمز:

//related object ids are retrieved from another context.
//since I thought the problem could be linked to object loaded in this context, I tried to
//close it and start on a fresh object context... 
int idetab = currentEtab.Id;
long idnivcycle = selectedNivcycle.id_nivcycle;
long idanscol = AnneeScolaireEnCours.id_annee_scolaire;
//and this context is closed
context.Dispose();


//This is the new object context
objectcontextEntities ctest = new objectcontextEntities();
//from where I retrieve all the objects I want to link to the object I want to create :            
Nivcycle niv = ctest.Nivcycles.Where("it.id_nivcycle=@id", new ObjectParameter("id", idnivcycle)).First();
Etablissement eta = ctest.Etablissements.Where("it.Id=@id", new ObjectParameter("id", Convert.ToInt32(idetab))).First();
annee_scolaire an = ctest.annee_scolaire.Where("it.en_cours = @id", new ObjectParameter("id", Convert.ToSByte(true))).First();
// Now I try to create my new object           
Composante co = new Composante();
co.Nom = "test";
co.Nivcycle = niv;
co.Etablissement = eta;
co.AnneeScolDeb = an;
ctest.AddToComposantes(co);
ctest.SaveChanges();
ctest.Dispose();

على Savechanges ()، أتلقى UpdateException، قائلا إن هناك إدخال مكررة "0" للمفتاح "الأساسي". صحيح أن لدي بالفعل كائن في بلدي "الأكمال" مع المعرف = 0. وإذا قمت بحذفها، يمكنني على الأقل إنشاء كائن واحد مع ID = 0. ما لا أفهمه هو أنه عند إضافة كائن جديد إلى السياق، لماذا لا يستغرق الأمر المعرف التالي المتاح ؟؟؟؟ هذا هو نفسه بالضبط نفس الخطأ الذي كان يحدث قبل أن أحاول إنشاء هذا الكائن في سياق جديد .... ربما يكون هذا بسبب قيادة مفقودة في Model.edmx؟ هل هناك طريقة في مكان ما لإجبار إسناد معرف جديد للكائن المنشأ حديثا؟

أقوم بالاتصال بقاعدة بيانات MySQL باستخدام نموذج إطار كيان باستخدام Devart Dot.Connector للاتصال بقاعدة البيانات. شكرا لكم جميعا مقدما على ردكم على هذا السؤال البسيط.

بيير. بيير

هل كانت مفيدة؟

المحلول

لقد وجدت الحل بنفسي. قد يكون من المفيد بالنسبة لشخص عالق على هذا الشيء الغبي ... لأنه فقط لأنه في قاعدة البيانات، لم يتم تعيين حقل المعرف على AutoInCrement ... تغيير هذا وتحديث Model.edmx حل المشكلة. آسف لإزعاجك مع هذا !!!!!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top