DataSet-Delete DBConcurrencyException
-
כאשר אני מוחק שורות מהדטה סט בטבלת הבנים ולאחר מכן אני בא לעדכן בבסיס הנתונים
עולה לי השגיאה שלהלן
אני מצרף קוד ותמונות להשלמת הבנת הענייןבמקרה שלהלן אני מוחק רק את השורות של טבלת האב בדטה סט וממיילא על ידי ההגדרה בקשר גומלין נמחקים שורות הילדים
כל הבעיה היא כאשר אני עושה אפדיטמקווה שהסברתי ברור
אשמח אם מישהוא יוכל לעזור
תודהif (teudaLetipul.GetParentTableRows().Count() > 0) { while (teudaLetipul.GetGetParentTableRows().Length > 0) { teudaLetipul.GetGetParentTableRows()[0].Delete(); } dta_childarenTable.Update(dts.childarenTable); dta_GetParentTable.Update(dts.GetParentTable); }

פורסם במקור בפורום CODE613 ב18/12/2013 19:25 (+02:00)
-
השגיאה הזאת בעצם אומרת, אני לא יודעת מה קרה, אבל תכלס לא נעשו שינויים במסד אפי' שלטעמי היו צריכים להיעשות.
במקרה זה היא מצביעה שהייתה שורה אחת שאמורה להיות מושפעת, ובכל אופן המסד אמר ש0 שורות הושפעו.מה שחשוב לראות זה מה קרה באמת במסד, ייתכן שפשוט מנסים למחוק פעמיים אותה שורה וכו'.
כדאי גם לעקוב אחרי שורה ספציפית ולראות את מצבה לפני הUpdate. מצבה אני מתכוון לRowState שלה.במקרה זה הבדיקה תהיה ע"י BreakPoint בשורת הUpdate, וכתיבה ב Immediate window:
? dts.childarenTable.GetChange().Rows[0].RowStateבנוסף, הערה על הקוד שלך:
עשית לולאה מאוד טריקית. היא מוחקת כל פעם שורה ראשונה, ועושה זאת שוב אם ישנם עוד שורות.
היא גם מפעילה על כל איטרציה פעמיים פונקציה GetXXXRows.
דרך טבעית יותר זה ככה:foreach (var row in teudaLetipul.GetGetParentTableRows()) { item.Delete(); }פורסם במקור בפורום CODE613 ב18/12/2013 20:38 (+02:00)
שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.
נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.
בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗
הרשמה התחברות