【发布时间】:2009-10-26 16:07:59
【问题描述】:
给定一个 DataGridView,它的 BindingSource 设置如下:
在 winform 上,我们使用设计器添加一个 BindingSource 对象,称为 myBindingScource。 然后在 Form.Designer.cs 中我们将它添加到 InitializeComponents()
myBindingSource.DataSource = typeof(MyLinq.Person); //Mylinq is the autogenerated Linq Model/Diagram
稍后,在表单本身中我们这样做:
myDataView.DataSource = myBindingSource;
然后我们有一个填充网格的方法......
using ( myDataContext mdc = new MyDataContext() )
{
myDataView.DataSource = from per in mdc.person
select per;
}
顺便说一句,我已经在设计时设置了列,一切正常。 由于 LINQ 2 SQL 没有返回匿名,“myDataView”是可编辑的,问题来了……
问题是:我如何保持这些更改?
数据网格中有几十个事件,我不确定哪一个更合适。即使我尝试其中一个事件,我仍然不知道我需要执行什么代码才能将这些更改发送回数据库以保持更改。
我记得在 ADO.NET DataSet 时代,你会做 dataadapter.Update(dataset);
还可以想象,retrieve 和 persist() 都在业务层上,方法签名如下所示:
public void LoadMyDataGrid(DataGridView grid);
该方法获取表单的网格并使用上面显示的 LINQ2SQL 查询填充它。
现在我想创建一个这样的方法:
public void SaveMyDataGrid(DataGridView grid); // or similar
这个想法是这个方法不在同一个类(表单)上,很多例子倾向于假设一切都在一起。
【问题讨论】:
标签: c# linq-to-sql commit dataview