Local query in Entity Framework
איך להריץ שאילתות ב - Entity Framework על ה - context ולא לרוץ לבסיס הנתונים.
(הקרדיט של הפוסט הזה שייך לאחי יוסי גולדברג)
בעייה:
יכול להיות שזה טוב ויכול להיות שלא, אבל זה מביא אותנו לבעייה הבאה.
נניח שאנחנו נותנים למשתמש את היכולת להוסיף מידע באמצעות 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();