fre*_*hie 12 c# linq linq-to-sql
我Cannot remove an entity that has not been attached.尝试删除记录时收到错误.我已经google了,虽然有很多地方可以找到解决方案来解决这个问题,但建议的修复方法并没有让我更进一步:
using (MyDataContext TheDC = new MyDataContext())
{
TheDC.MyTable.Attach(ARecord); //added this line but doesn't fix it.
TheDC.MyTable.DeleteOnSubmit(ARecord);
TheDC.SubmitChanges();
Run Code Online (Sandbox Code Playgroud)
我更大的问题是:这个问题是否仅影响删除查询,还是影响其他类型的查询,我还没有碰到这个问题.我写了一个更新查询,似乎没有遇到这个错误.
谢谢.
Gen*_*ent 15
请参考这篇SO帖子:如何在linq中删除sql?
...关于附加,如果你已经有主键.如果你没有主键,那么我总是只进行一次获取然后删除,但是,每当我进行提取时,我倾向于存储主键以进行更新和删除.
它将删除主键,但如果你有,那么只需按照我的方式附加并调用delete.我不会传递DLINQ所需的对象,因为我希望能够在需要时更改它,因此我传入一个不同的User对象,只需从业务类中提取PK并将其放入DAO类.
Run Code Online (Sandbox Code Playgroud)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);
}
Run Code Online (Sandbox Code Playgroud)
在我看来,我只能删除已经存在的内容,因此需要从数据库中获取要首先删除的项目。这也适用于集合和DeleteAllOnSubmit()。
| 归档时间: |
|
| 查看次数: |
15687 次 |
| 最近记录: |