C# 为什么不是';t LINQ-to-SQL结果I';我正在更新保存?
我正在尝试更新LINQ到SQL查询的结果,如下所示:C# 为什么不是';t LINQ-to-SQL结果I';我正在更新保存?,c#,linq,linq-to-sql,C#,Linq,Linq To Sql,我正在尝试更新LINQ到SQL查询的结果,如下所示: foreach (var selectedItem in lvFolders.SelectedItems) { Folder folder = selectedItem as Folder; folder.IsNeeded = "N"; var dbResult = from r in _dataContext.AllDFSDatas where
foreach (var selectedItem in lvFolders.SelectedItems)
{
Folder folder = selectedItem as Folder;
folder.IsNeeded = "N";
var dbResult = from r in _dataContext.AllDFSDatas
where ((r.FolderPath == folder.FolderPath) && (r.COO == cboCOO.SelectedItem.ToString()))
select r;
foreach (var result in dbResult)
{
result.StillNeeded = "N";
}
try
{
var test = _dataContext.GetChangeSet();
_dataContext.SubmitChanges();
}
catch
{
System.Windows.MessageBox.Show("Error saving data. Please contact support",
"Survey Error.", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
不幸的是,在foreach中更新result.StillNeeded后,dbResult仍然显示旧值。我在MSDN上看到了非常类似的代码,以及看起来工作正常的堆栈溢出
有没有想过为什么会发生这种情况
谢谢 找到了答案。我(非常棒)的DBA使用autoincrement创建了一个ID列,但没有将其设置为主键。完成此操作后,在DBML设计器中设置主键,最后将“AutoSync”设置为“OnInsert”,我就能够正确地更新数据库了。我不确定dataContext的定义在哪里?\u dataContext是在WPF表单的构造函数中初始化的私有变量,简单地说就是_dataContext=new DFSDataContext();。如果可以,您应该迁移到实体框架,它比Linq到Sql要好得多