C# 使用DataGridView时,更改上下文的正确方法是什么?
我对做这些改变完全感到困惑 假设数据库中有一个表,我们称之为C# 使用DataGridView时,更改上下文的正确方法是什么?,c#,entity-framework,datagridview,entity-framework-4,bindingsource,C#,Entity Framework,Datagridview,Entity Framework 4,Bindingsource,我对做这些改变完全感到困惑 假设数据库中有一个表,我们称之为Customers 我们使用实体框架从表中获取数据,如下所示: List customers=context.customers.ToList() 我们还有一个BindingSource,我们使用列表我认为您缺少的一块拼图是数据访问层。 如果在该层中公开上下文,则可以定义一些规则来规范代码 上下文->数据访问层->表示层 通过这种方式,您可以根据需要处理上下文,您可以设计一种方法,以返回现有的完整客户表: List<Custom
Customers
我们使用实体框架从表中获取数据,如下所示:
List customers=context.customers.ToList()代码>
我们还有一个BindingSource
,我们使用列表我认为您缺少的一块拼图是数据访问层。
如果在该层中公开上下文,则可以定义一些规则来规范代码
上下文->数据访问层->表示层
通过这种方式,您可以根据需要处理上下文,您可以设计一种方法,以返回现有的完整客户表:
List<Customers> customers = context.Customers.ToList();
在最后一种方法中,您可以为操作分配EntityState,并使用:
if (entity.EntityState == EntityState.Modified || entity.EntityState == EntityState.Deleted)
{
context.Refresh(RefreshMode.StoreWins, entity);
}
else if (entity.EntityState == EntityState.Added)
{
context.Detach(entity);
}
您可以处理上下文刷新
现在只剩下一件事了,那就是决定如何启动表示层(DataGridView)的刷新功能。我找到了解决方案,它是使用双向数据绑定。这样,当我们从网格中添加、编辑或删除记录时,各方都会得到通知。微软在这里有一个教程,但也有其他方法
if (entity.EntityState == EntityState.Modified || entity.EntityState == EntityState.Deleted)
{
context.Refresh(RefreshMode.StoreWins, entity);
}
else if (entity.EntityState == EntityState.Added)
{
context.Detach(entity);
}