无法通过从中检索的datacontext删除记录

时间:2009-09-17 15:10:02

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

我刚刚升级了我的一个应用程序的方法来使用编译的查询(不确定这是否相关)。现在,当我运行代码时,我会收到相互矛盾的错误消息。

这是我的方法:

MyClass existing = Queries.MyStaticCompiledQuery(MyRequestScopedDataContext, param1, param2).SingleOrDefault();

if (existing != null)
{
    MyRequestScopedDataContext.MyClasses.DeleteOnSubmit(existing);
}

当我运行它时,我收到此消息:

  

无法删除尚未删除的实体   已被附上。

请注意,编译后的查询和DeleteOnSubmit引用相同的DataContext。我仍然认为我会幽默应用程序并在DeleteOnSubmit之前添加一个attach命令,如下所示:

MyClass existing = Queries.MyStaticCompiledQuery(MyRequestScopedDataContext, param1, param2).SingleOrDefault();

if (existing != null)
{
    MyRequestScopedDataContext.MyClasses.Attach(existing);
    MyRequestScopedDataContext.MyClasses.DeleteOnSubmit(existing);
}

但是......当我运行此代码时,我得到一个完全不同的矛盾错误消息:

  

已尝试附加或   或许,添加一个非新的实体   从另一个装载   DataContext的。这不受支持。

我完全失去了......

是否有其他人对我为什么无法通过从中检索到的相同DataContext删除记录有所了解?

1 个答案:

答案 0 :(得分:0)

嗯,静态数据上下文已经听起来像是一个潜在的问题(特别是线程,但也是陈旧的对象和处置)。我的直接想法是:是否启用了对象跟踪?不确定是否需要,但肯定要考虑。