EF 5.0 WinForms在绑定DataGridView中添加新行

EF 5.0 WinForms在绑定DataGridView中添加新行,winforms,entity-framework,data-binding,Winforms,Entity Framework,Data Binding,我已经使用dbcontext将dgv绑定到实体。很好。行显示在dgv中,我可以修改单元格并使用SaveChanges进行更新。但是,如果尝试在dgv中添加新行,则不会保存该行。如果dgv绑定到实体,新行不应该自动添加,或者我必须做些什么来添加它吗?什么?请提供示例代码。下一步我将尝试从dgv中删除。我会有类似的问题吗?我怎样才能让它工作呢?我在互联网上搜索了一些例子,但它们只限于绑定enities,不包括添加或删除。任何帮助都将不胜感激。我发现了两个类似问题的链接,其中一个是: 似乎使用.To

我已经使用dbcontext将dgv绑定到实体。很好。行显示在dgv中,我可以修改单元格并使用SaveChanges进行更新。但是,如果尝试在dgv中添加新行,则不会保存该行。如果dgv绑定到实体,新行不应该自动添加,或者我必须做些什么来添加它吗?什么?请提供示例代码。下一步我将尝试从dgv中删除。我会有类似的问题吗?我怎样才能让它工作呢?我在互联网上搜索了一些例子,但它们只限于绑定enities,不包括添加或删除。任何帮助都将不胜感激。

我发现了两个类似问题的链接,其中一个是:

似乎使用.ToList会弄乱绑定。在我的例子中,我使用MyContext.MyTable.Local.ToList作为源。当我取下.ToList时,一切都很完美。也许有人能更详细地告诉我们为什么这样做


感谢你们中最先发现这一点的人。

.NET Framework 4的解决方案

我已尝试删除.ToList(),但没有结果

所以我的解决办法是:

对于删除:
在datagridview UserDeletingRow事件上

// Get deleted entity:
myEntityType currentEntity = (myEntityType)BindingSource[e.Row.Index];

// Delete directly from context
context.myEntityType.Remove(currentEntity);
对于插入:
在save按钮上,我循环浏览BindingSource并检查是否有任何entity的ID==0,然后添加context.MyEntityType.ADD(currentEntity)中的每一个