Ответ 1
List<Object> modifiedOrAddedEntities = context.ChangeTracker.Entries()
.Where(x => x.State == System.Data.EntityState.Modified
|| x.State == System.Data.EntityState.Added)
.Select(x=>x.Entity).ToList();
При привязке объектов EF к DataGridView
часто предпочтительнее создать IBindingList
из DbSet.Local
ObservableCollection
. Таким образом вы получаете двустороннюю привязку данных, и ваши новые сущности автоматически добавляются в контекст при добавлении через BindingSource.Add()
или IBindingList.Add()
. Самый простой способ получить эту работу, после правильной привязки, - установить DataGridView.AllowUserToAddRows
на истинные и новые строки, которые будут вводить пользователи, будут новыми объектами, добавленными в контекст.
context.Orders.Load();
BindingList<Order> bindingList = context.Orders.Local.ToBindingList();
BindingSource ordersBindingSource = new BindingSource();
ordersBindingSource.DataSource = bindingList;
dataGridView1.DataSource = ordersBindingSource ;
System.Data.Entity
следует ссылаться на использование .ToBindingList()
, и вы должны использовать EF4.1 или больше.