LinqToSql - Save just the last change
מישהו חביב בשם נריה שאל אותי את השאלה הבאה:
"יש לי אפליקציה חלונאית, ובה dataGridView המקבל את הנתונים ע"י Binding מ DataContext.
ואני רוצה כפתור שישמור רק את השינוי האחרון שבוצע."
באופן אישי לא יצא לי כל כך להשתמש עדיין ב LinqToSql, אבל כמובן שזאת הייתה הזדמנות נהדרת לבדוק את זה, וידוע שאני אוהב ללמוד דברים חדשים, אז התחלתי להסתכל..
בסוף עשיתי את הדבר הבא, עשיתי undo לכל השינויים האחרונים, חוץ מלאחרון, ואז שמרתי את השינוי האחרון.
הנה הקוד:
1 public static void UpdateLastChanges()
2 {
3 ChangeSet cs = ndc.GetChangeSet();
4 var listOfUpdates = cs.Updates.ToList();
5 listOfUpdates.RemoveAt(listOfUpdates.Count - 1);
6
7 ndc.Refresh(RefreshMode.OverwriteCurrentValues, listOfUpdates);
8
9 ndc.SubmitChanges();
10 }
זה עובד, אבל אני לא מרוצה מזה,
דבר ראשון, אני לא מעוניין לעשות undo, מה שאני רוצה לעשות, זה לשמור ב database רק את השינוי האחרון.
שנית, אני לא יודע האם הפעולה האחרונה הייתה, Insert, Update or Delete,
אם למישהו יש רעיון יותר טוב, אני ונריה נשמח מאוד לשמוע.
שלמה