DCSIMG
Local query in Entity Framework - שלמה גולדברג (הרב דוטנט)

שלמה גולדברג (הרב דוטנט)

מרצה בסלע ויועץ בעולם ה - net.

Local query in Entity Framework

 

איך להריץ שאילתות ב - Entity Framework על ה - context ולא לרוץ לבסיס הנתונים.

 
(הקרדיט של הפוסט הזה שייך לאחי יוסי גולדברג)
 
בעייה:
כלל ידוע ב - Entity Framework שכל הפעלה של פונקצייה מתבצעת בבסיס הנתונים.
יכול להיות שזה טוב ויכול להיות שלא, אבל זה מביא אותנו לבעייה הבאה.
 
נניח שאנחנו נותנים למשתמש את היכולת להוסיף מידע באמצעות Entity Framework אבל אנחנו לא עושים SaveChanges בכל פעם שהמשתמש מוסיף שורה וכתוצאה מכך בפעם הבאה שננסה להביא את הנתונים (נניח לקשר אותו לגריד) המשתמש לא יראה את השורה שהוא הוסיף ברגע זה.
 
פיתרון:
כשיש שאלות ב - Entity Framework פונים כמובן או לגיל או לעידו, התמזל מזלנו ומצאנו את עידו במסדרונות סלע, הפיתרון הוא להשתמש ב - Local Query כלומר להריץ שאילתות על ה - ObjectStateManager.
 
לדוגמא:
 

var localList = from stateEntry in NewsEntities.ObjectStateManager

                                .GetObjectStateEntries(EntityState.Added |

                                                       EntityState.Modified |

                                                       EntityState.Unchanged)

                where stateEntry.Entity != null && stateEntry.EntitySet.Name == "NewsSet"

                select stateEntry.Entity as News;

 

return localList.ToList();

תוכן התגובה

Shlomo כתב/ה:

תחשוב על מנהל שאמור לייצר חדשות לאתר

הוא לא רוצה בזמן לחיצה על ADD שזה יכנס מיידית לאתר - במקרים האלו זה יכול להיות יעיל

# May 27, 2010 6:11 PM
שלח תגובה

(שדה חובה)  

(שדה חובה)  

(אופציונלי)

(שדה חובה) 

Please add 1 and 4 and type the answer here:


Enter the numbers above: