在LINQ中附加新创建的元素以进行删除

时间:2012-10-26 13:23:57

标签: c# .net linq linq-to-sql ado.net

我有一个与之相关的网格和数据集对象。 和数据层一起使用LINQ。所以我需要从LINQ数据源中删除网格中删除的元素。

我有一个将DataRow项转换为LINQ项的方法。例如:

DataRow forDelete = ...;
LinqItem itemForDelete = ConvertFromDataRow(forDelete);
dataContext.DeleteOnSubmit(itemForDelete);

此代码抛出异常,删除未附加到表的项目是不可能的。 但如果我把它改成

DataRow forDelete = ...;
LinqItem itemForDelete = ConvertFromDataRow(forDelete);
dataContext.Attach(itemForDelete)
dataContext.DeleteOnSubmit(itemForDelete);

它会抛出异常,即无法附加已经存在的项目。

问题是如何在这种情况下正确附加项目。这应该可以解决问题。

2 个答案:

答案 0 :(得分:0)

异常是因为您正在尝试删除未经跟踪的项目。

在DeleteOnSubmit之前按ID查找。

更多信息:

http://msdn.microsoft.com/en-us/library/bb386982.aspx

How to delete in linq to sql?

答案 1 :(得分:0)

看起来这个问题没有正确的答案或没有办法做我需要的。