Detach and Attach - Entity Framework
מצב סביר בעולם ה - web.
משתמש ביצע לוגין.
הבאנו את המידע שלו בעזרת EF, (המידע שלו מכיל אובייקט - נניח קוראים לו User - שמכיל הפנייה לאובייקטים אחרים)
שמרנו אותו ב - Session אבל לא שמרנו את ה - Context מכיוון שלא רצינו לשמור על connection פתוח כל הזמן.
כעת עשינו שינוי כלשהו באובייקט ונרצה לשמור אותו בבסיס הנתונים.
אם נעשה את השינוי ישירות באובייקט ששמרנו בזיכרון, לא נוכל לבצע SaveChanges על ה - context, מכייון שהאובייקט ששמרנו שייך ל - Context אחר (שכבר נעלם).
אם נעשה את השינוי בבסיס הנתונים נצטרך גם לעשות את השינוי באובייקט שלנו כדי לשמור על אותו מידע.
הפיתרון שלכאורה אמור לפתור את הבעייה, הוא לבצע פעולת Detach על האובייקט User לפני ששומרים אותו בזיכרון, לבצע את השינויים בו, ולבצע פעולת Attach כדי להחזיר אותו ל - Context, ולאחר השמירה שוב לבצע Detach.
הבעייה עם זה היא ש - Detach מנתק את הקשר בין User לבין שאר האובייקטים שקשורים אליו.
שמרתי אותו בזיכרון.
לפני ביצוע השינוי בצעתי פעולת Attach.
עשיתי את השינוי ישירות על האובייקט.
SaveChanges.
ושוב סריאליזציה כדי לנתק אותו מה - Context.
הפיתרון עובד ודי משביע רצון.