C# “linq到sql”;无法删除尚未附加的实体";
当我尝试删除记录时,出现错误C# “linq到sql”;无法删除尚未附加的实体";,c#,linq,linq-to-sql,C#,Linq,Linq To Sql,当我尝试删除记录时,出现错误无法删除尚未附加的实体。。我在谷歌上搜索过,虽然有很多地方可以找到解决方案来解决这个问题,但建议的解决方案并没有让我走得更远: using (MyDataContext TheDC = new MyDataContext()) { TheDC.MyTable.Attach(ARecord); //added this line but doesn't fix it. TheDC.MyTable.DeleteOnSubmit(ARecord); TheDC.
无法删除尚未附加的实体。
。我在谷歌上搜索过,虽然有很多地方可以找到解决方案来解决这个问题,但建议的解决方案并没有让我走得更远:
using (MyDataContext TheDC = new MyDataContext())
{
TheDC.MyTable.Attach(ARecord); //added this line but doesn't fix it.
TheDC.MyTable.DeleteOnSubmit(ARecord);
TheDC.SubmitChanges();
我更大的问题是:这个问题是只影响删除查询,还是也影响其他类型的查询?我只是还没有碰到这个问题。我已经编写了一个更新查询,它似乎没有遇到这个错误
谢谢。请参阅本SO帖子: …关于附加,如果您已经拥有主键。如果您没有主键,那么我总是先抓取,然后删除,但是,每当我抓取时,我倾向于存储主键以进行更新和删除 它将删除掉主键,但如果你有,那么只需像我下面所做的那样附加并调用delete。我不传递DLINQ所需的对象,因为我希望能够在需要时对其进行更改,因此我传入了另一个用户对象,只需从business类中提取PK并将其放入DAO类中
var db = new MeatRequestDataContext();
if (input.UserID > 0)
{
entity = new User()
{
UserID = input.UserID
};
db.Users.Attach(entity);
db.Users.DeleteOnSubmit(entity);
}
对我来说,修复程序只是首先搜索数据库对象
var db = new MeatRequestDataContext();
if (input.UserID > 0)
{
var existing = db.Users
.Single(user => user.UserID == input.UserID);
db.Users.DeleteOnSubmit(existing);
}
在我看来,我只能删除已经存在的内容,所以我需要先从数据库中获取要删除的项目。这也适用于集合和DeleteAllOnSubmit()