Linq上下文对象未注册为System.IDisposable对象的类型

我正在尝试在using语句中使用我的’context’对象。 它适用于一个项目,但另一个项目,我收到以下错误。

‘…’:在using语句中使用的类型必须可以隐式转换为’System.IDisposable’

当我指的是’context’对象时,我指的是当你使用LINQ to SQL时自动创建的对象。

我正在工作的类,实现另一个接口,可能是搞砸了这个上下文对象?

using (TGDC context = new TGDC()) { } 

这个单词

运用

它下面有红色的斜线(错误)。

您应该添加对System.Data.Linq的引用。 我怀疑这是问题所在。

或者,如果您使用的是Entity Framework,请确保您具有对System.Data.EntitySystem.Data.Objects (C#: using / VB.NET:Imports)的引用。

添加对定义EF上下文类的项目引用的EntityFramework.dll程序集的引用。

添加对EntityFramework程序集的引用

这是一个较旧的问题,但自从我通过Google搜索找到它:

我在使用Visual Studio 2010中没有问题的网站时遇到过这种情况。

Visual Studio 2012和Entity Framework有些奇怪之处; 将EF添加到现有项目会导致安装EF 5.0(NuGet包),没有选择坚持使用4.0。

对这个链接问题的答案的评论是使实现流行的原因。

解决方案似乎是升级到VS 2012使用的EF版本,或使用VS 2010。

它说TGDC没有实现IDisposable接口。

TGDC的类声明如何? 你有更多的编译错误吗? 您是否在不同的命名空间中有几个名为TGDC的类?

我定期得到这个,有一段时间我总是习惯于与它斗争,因为它没有立即明显出错了。 似乎所有的篮球都被跳过,但唉,不是这样。 最终解决方案将坚持下去。

在您正在编写此代码的项目中,您正在引用定义了“TGDC”的项目,但您没有引用System.Data.Linq。 您需要引用这两个程序集。 只有当您使用某种分层架构时才会发生这种情况。