C# 使用IBindingSource.AddNew()方法后如何将更改保存到数据库
我有一个表单,用于编辑和向数据库中插入新用户。我使用实体框架6。我的所有控件(文本框和一个组合框)都绑定到特定的绑定源,因此当我使用以下内容更新实体时:C# 使用IBindingSource.AddNew()方法后如何将更改保存到数据库,c#,visual-studio,datagridview,entity-framework-6,bindingsource,C#,Visual Studio,Datagridview,Entity Framework 6,Bindingsource,我有一个表单,用于编辑和向数据库中插入新用户。我使用实体框架6。我的所有控件(文本框和一个组合框)都绑定到特定的绑定源,因此当我使用以下内容更新实体时: context.user.add(user); context.Save(); 我的UI改变了。反之亦然。现在,更新工作正常,但我在插入新用户时遇到了一些问题。目前,数据网格视图已设置了它的数据源,我已通过直接单击网格视图禁用了添加行(因为我希望该部分遍历表单): 好的,到目前为止还不错。现在,当我想添加新用户时,我会执行以下操作: my
context.user.add(user);
context.Save();
我的UI改变了。反之亦然。现在,更新工作正常,但我在插入新用户时遇到了一些问题。目前,数据网格视图已设置了它的数据源,我已通过直接单击网格视图禁用了添加行(因为我希望该部分遍历表单):
好的,到目前为止还不错。现在,当我想添加新用户时,我会执行以下操作:
myDataSource = context.user.Local.ToBindingList();
myDataSource.AllowNew = true;
后来:
myDataSource.AddNew();
调用完<代码> AddieNo()/C> >后,将空白行添加到网格视图中,当在窗体中插入值时,在网格视图中自动显示所有内容。
问题是,我真的无法将这些数据保存到数据库中。如果我这样做:context.Save();
什么也没发生。我猜是因为AddNew()方法新创建的实体没有附加到当前上下文。但我没有一个参考来附上它
我猜AddNew()
会创建一个新实体,对吗?并将其添加到数据源中。如果我错了,请纠正我
那么在这种情况下如何保存更改呢?我遇到了一个类似的问题,就是如何将添加的记录持久化到数据库中。我有相同的基本设置,使用.Load并设置绑定源数据源=.Local.ToBindingList() 找到了一个奇怪的解决办法。因此,在BindingNavigator保存事件下,这是我获取新添加的记录并将其保存到数据库中的唯一方法。最后一个ResetBindings调用只是为了让Identity Id显示它的实际DB值,而不是零
private void mapBindingNavigatorSaveItem_Click(object sender, EventArgs e)
{
mapBindingSource.EndEdit();
mapBindingSource.ResetBindings(false);
mapBindingSource.EndEdit();
_db.SaveChanges();
mapBindingSource.ResetBindings(false);
}
我看到您使用了context,但您调用了save on context(没有u)@skyler@lauren不,这只是一个示例。我在任何地方都使用
context
。但我会解决的,谢谢!