【发布时间】:2014-11-12 15:38:25
【问题描述】:
我正在使用 .NET 4.0,我从数据库中获取结果,列表如下:
List<Customers> customers = context.Customers().ToList();
然后我将它分配给BindingSource:
bindingSource1.DataSource = null;
bindingSource1.DataSource = customers;
bindingSource 用作网格视图的数据源,可以在其中执行更改 - 添加新记录、编辑、删除。
问题是当我想取消更改并将gridview中的数据恢复为数据库中的数据时。
我有以下代码可以取消更改:
private void cancelChanges()
{
// Refresh the modified entries
var objectsModified = context.ObjectStateManager.GetObjectStateEntries(
System.Data.EntityState.Modified | System.Data.EntityState.Deleted)
.Select(e => e.Entity);
context.RefreshFromDb(objectsModified);
// Detach the added entries
var objectsAdded = context.ObjectStateManager.GetObjectStateEntries(
System.Data.EntityState.Added)
.Select(e => e.Entity);
foreach (var item in objectsAdded)
{
context.Customers().Detach(item as Customers);
}
}
我可以看到它有效,但问题是列表仍然保留旧记录(应该取消),因此也保留绑定源,最后它们仍然显示在网格中。
【问题讨论】:
标签: c# winforms entity-framework entity-framework-4 bindingsource