EntityFramework показывает объекты перед сохранением изменений - PullRequest
9 голосов
/ 28 марта 2011

Entity Framework ObjectSet с его методом ToList показывает только что сохраненные сущности.Это означает, что когда я вызываю

context.AddToCustomers(myNewCust);

и затем (без вызова SaveChanges)

myDataGrid.DataContext = context.Customers.ToList();

, DataGrid не показывает вновь добавленную сущность (даже context.Customers.Count() не включаетэто).

Есть ли способ показать эти сущности (те, у кого EntityState = Added)?

Заранее спасибо.

Ответы [ 2 ]

9 голосов
/ 28 марта 2011

Я думаю, вы можете получить несохраненные добавленные объекты, вызвав что-то вроде:

var inserted = context.ObjectStateManager
                      .GetObjectStateEntries(EntityState.Added)
                      .Where(e => !e.IsRelationship)
                      .Select(e => e.Entity)
                      .OfType<Cutomer>();

Но, просто прочитав ваш вопрос, я боюсь, что вы пытаетесь сделать что-то не так. Зачем вам нужно объединять несохраненные сущности с извлеченными? Если вам нужно показать несохраненный контент, вы должны просто сохранить его в отдельной коллекции.

2 голосов
/ 28 марта 2011

Посмотрите на метод TryGetObjectStateEntry (EntityKey, ObjectStateEntry)

http://msdn.microsoft.com/en-us/library/system.data.objects.objectstatemanager.aspx

...