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

cap*_*aig 3 datagridview crud linq-to-sql winforms

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

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

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

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

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

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

Dan*_*n J 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();
Run Code Online (Sandbox Code Playgroud)

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