我有一个简单的winforms应用程序,我使用linq-to-sql连接到我的数据库。
我直接从数据库生成了类,我有一个DataAccess类,它包装了我的datacontext,可以给我任何我需要的东西。
我有一个视图,它使用一个对象数据源为我的实体填充一个DataGridView和一组相关的文本字段等(让我们称之为EmployeeView)
视图加载所有现有行,当我点击网格时,字段会相应更新。
如果我更改字段,更改将在记录更改后保留,但我不确定如何通过数据访问层保存更改。如何检测哪些记录是脏的并需要保存?我如何保存它们?添加新记录的最佳方法是什么?删除记录?
我可以在网上找到很多资源,但没有我需要的那些例子。任何人都可以帮助我解决一些基本模式,或者指出一个好地方吗?
答案 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对象的属性。