我刚刚升级了我的一个应用程序的方法来使用编译的查询(不确定这是否相关)。现在,当我运行代码时,我会收到相互矛盾的错误消息。
这是我的方法:
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删除记录有所了解?
答案 0 :(得分:0)
嗯,静态数据上下文已经听起来像是一个潜在的问题(特别是线程,但也是陈旧的对象和处置)。我的直接想法是:是否启用了对象跟踪?不确定是否需要,但肯定要考虑。