【发布时间】:2012-02-21 20:57:16
【问题描述】:
我正在尝试使用 linq to sql 更新 sql 表:
使用 Linq to SQL 查询数据库 我能够将数据加载到 WPF 应用程序的 UI 中的 gridview 中。所以我有一个与每一行关联的复选框。该表将 EmpName 和 Ability 作为两列。因此,当用户选中与行/行关联的复选框时,我必须将表中的值更新回 sql DB 中。
这是我选中的复选框的代码:
private void EmployeeName_Checked(object sender, RoutedEventArgs e)
{
DataDataContext dc = new DataDataContext();
foreach (var item in empListView.SelectedItems)
{
EmpList updateList = (from p in dc. EmpList
where p.able == No
select p).FirstOrDefault();
if(updateList.able==NO)
updateList.able = YES;
}
dc.SubmitChanges();
empListView.ItemsSource = dc.EmpLists.ToList();
}
这里的EmpList 是我从设计器添加linqtosql 类时创建的。所以我正在尝试更新同一个列表,然后将更改提交到数据库。
问题:我可以根据gridview 中选中的复选框来选择行,并且我可以遍历选中的项目,但是我无法更新所有选中的行......只有少数正在更新......如果有人可以查看代码并在查询有任何问题时指导我,我会很高兴。
最终,我必须根据gridview的colum Ability中的当前值更新所有选择的行。
【问题讨论】:
-
您的示例代码无法编译。我仍然猜想您的问题是您在每次迭代时都覆盖了数据上下文。因此,您的保存调用仅作用于最后一个。
-
@cadrell0 Yes 和 No 是来自数据库的位值。
-
@usr 此外,对
dc.SubmitChanges()的调用发生在与声明变量的范围不同的范围内。此时它应该超出范围并且不可用。 -
cadrell0,这就是我所说的“不会编译”。我认为这个问题是以一种粗心的方式发布的。
标签: c# wpf linq-to-sql