使用Entity Framework在DataGridView中添加/删除行

时间:2016-06-28 21:04:24

标签: c# winforms entity-framework datagridview

我为一组Windows用户创建了一个简单的桌面应用程序(.NET 4.5)。我正在考虑使用Entity Framework(6)。该设计首先是数据库。

CREATE TABLE [CommodityCombo](
    Recid INT IDENTITY PRIMARY KEY NOT NULL,
    Name VARCHAR(100) NOT NULL DEFAULT ''
) ON [PRIMARY]

GO

CREATE TABLE [CommodityComboMember] (
    Commodity VARCHAR(20) NOT NULL PRIMARY KEY,
    ComboId INT NOT NULL REFERENCES CommodityCombo(Recid)
) ON [PRIMARY]
GO

这就是两个表的SQL。这个概念是一对主/详细数据网格视图。主人将用于添加/删除CommodityCombos以及添加/删除成员的细节。

那么在表单加载事件处理程序中我有......

try
{
    db = new MyEntities();
    var combos = (from c in db.CommodityCombos
                  select c);
    //this.dataGridView1.DataSource = combos;
    this.dataGridView1.DataSource = db.CommodityCombos.ToList();
}
catch (Exception e1)
{
    MessageBox.Show(e1.Message);
}

现在我认为如果datagridview具有常规的添加/删除功能,那将非常简单。即,您可以突出显示一行,然后按[删除]或在底部空白行中添加信息。但这似乎不起作用。记录进来了,但是"自然"添加/删除无效。

现在我找到了这篇文章...... DataGridView AllowUserToAddRow property doesn't work

接受的答案表明,要做的就是传递查询对象。

然而,这会产生一个例外......而且这篇文章对应...... Data binding directly to a store query (DbSet, DbQuery, DbSqlQuery) is not supported ...基本上我说我必须使用object.toList()。

不可否认,我注意到第一篇文章接受了使用绑定源的答案提示,但它缺少一些细节,这些细节用于将查询结果作为绑定源提供,同时保留添加/删除功能,同时不会抛出异常。

有人可以对此有所了解吗?或者让我指向一个更好的资源方向?或者我应该想出并创建[新]和[删除]按钮来手动处理它?<​​/ p>

0 个答案:

没有答案