使用linq-to-sql在Winforms中进行CRUD

时间:2010-07-31 05:39:07

标签: winforms linq-to-sql datagridview crud

我有一个简单的winforms应用程序,我使用linq-to-sql连接到我的数据库。

我直接从数据库生成了类,我有一个DataAccess类,它包装了我的datacontext,可以给我任何我需要的东西。

我有一个视图,它使用一个对象数据源为我的实体填充一个DataGridView和一组相关的文本字段等(让我们称之为EmployeeView)

视图加载所有现有行,当我点击网格时,字段会相应更新。

如果我更改字段,更改将在记录更改后保留,但我不确定如何通过数据访问层保存更改。如何检测哪些记录是脏的并需要保存?我如何保存它们?添加新记录的最佳方法是什么?删除记录?

我可以在网上找到很多资源,但没有我需要的那些例子。任何人都可以帮助我解决一些基本模式,或者指出一个好地方吗?

1 个答案:

答案 0 :(得分:5)

我认为,使用LINQ-to-SQL类的最基本方法是实例化它们的列表(例如,让我们使用Employee)来包含您希望(可能)编辑的Employees。当这些Employee对象的属性发生更改时,对象会自动“弄脏”,并且对DataContext.SubmitChanges()的调用将保留它们。

List<Employee> employees = (from e in dataContext.Employees where e.Salary > 50000 select e).toList();

foreach(var employee in employees)
{
  employee.CanAffordToyotaPrius = true;
}

dataContext.SubmitChanges();

如果您正在包装DataContext并且仅使用DataGridView更改包装器对象的属性,则需要某种方法将这些更改冒泡到您选择数据时使用的基础LINQ-to-SQL对象。例如,您可以使用包装器属性上的setter来设置基础LtS对象的属性。