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

标签 winforms linq-to-sql datagridview crud

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

我直接从数据库生成了类,并且我有一个 DataAccess 类,它包装了我的数据上下文,并且可以提供我需要的任何内容。

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

该 View 加载所有现有行,当我单击网格时,字段会相应更新。

如果我更改字段,更改将通过记录更改持续存在,但我不确定如何通过数据访问层保存更改。如何检测哪些记录是脏的并且需要保存?那我该如何拯救他们呢?添加新记录的最佳方式是什么?删除记录?

我可以在网上找到很多资源,但没有一个包含我需要的示例。谁能帮我解决一些基本模式,或者给我指出一个好地方?

最佳答案

我认为,使用 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 对象的属性。

关于winforms - Winforms 中使用 linq-to-sql 进行 CRUD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3376975/

相关文章:

Winforms DataGridView 显示空白行

winforms - 绘制渐变矩形的有效方法

c# - 我无法通过双击转到 "EventHandler"

linq-to-sql - 具有类型安全整数类的 LINQ To SQL

linq - 测试 LINQ to SQL 表达式

c# - 以编程方式添加到 DataGridView 单元格的 ComboBox 在单元格单击时不展开

.net - 如何在WinForm应用程序中实现应用程序范围的颜色代码?

c# - .net 窗口顺序

c# - 自定义类中 Linq to SQL 的 DeleteOnNull(关联属性)?

c# - 如何删除 DataGridView 底部的编辑行?