假设有一个BindingSource的设置这样一个DataGridView:提交更改
在一个winform,我们添加使用设计,称为myBindingScource一个BindingSource的对象。 然后在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);
也可以设想,无论是恢复和坚持()是在业务层和方法签名如下所示:
public void LoadMyDataGrid(DataGridView grid);
该方法采用以下形式的网格,并使用上面显示的LINQ2SQL查询填充它。
现在我想创建一个方法是这样的:
public void SaveMyDataGrid(DataGridView grid); // or similar
的想法是,这种方法并不是在同一类(形式),许多例子往往认为一切都在一起。
我对“//保存此人”部分代码感兴趣。 我有一个来自数据库的人物,并被放置在一排。该行已被编辑。现在我想让LINQ把这些变化放回去。在NHIBERNATE等人中,每个类/对象都有“.save()”或“.persist()”方法。但我不知道如何告诉LINQ(通过阅读下面的cloggings示例),更新人物对象。 – 2009-10-27 10:31:56
我在这里找到了解决方案(附件):http://geekswithblogs.net/michelotti/archive/2007/12/17/117791.aspx – 2009-10-27 10:59:04