Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用IBindingSource.AddNew()方法后如何将更改保存到数据库_C#_Visual Studio_Datagridview_Entity Framework 6_Bindingsource - Fatal编程技术网

C# 使用IBindingSource.AddNew()方法后如何将更改保存到数据库

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

我有一个表单,用于编辑和向数据库中插入新用户。我使用实体框架6。我的所有控件(文本框和一个组合框)都绑定到特定的绑定源,因此当我使用以下内容更新实体时:

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
。但我会解决的,谢谢!