【问题标题】:Why does the Using statement give an error even though my type implements IDisposable?为什么即使我的类型实现了 IDisposable,Using 语句也会出错?
【发布时间】:2013-01-23 06:52:41
【问题描述】:

在我的DataAccess 项目中,我有代码:

using (TandAEntities dataContext = new TandAEntities())
{
    // Some code
}

这不会出错并且工作正常。

但在我的单元测试项目中,我有相同的代码,但编译器给出了错误; using 语句中使用的类型必须可隐式转换为 'System.IDisposable'

我通过按F12检查了定义,它确实实现了IDisposable,并且有一个dispose方法。

我可能遗漏了一些参考资料吗?

【问题讨论】:

标签: c# entity-framework unit-testing


【解决方案1】:

链接副本中最有可能的答案 - 缺少 using System.Data.Linq

其他选项:您在某处有过时的 DLL(即安装在 GAC 中)。

如果您无法通过四处查看和检查 GAC 轻松找到陈旧的 DLL,请将代码更改为使用此类型但编译和调试测试的代码。检查 Debug->Windows->Modules 以了解实际使用的这种类型的程序集的位置。

【讨论】:

  • 我包含了使用 System.Data.Linq,但它不起作用,但我随后添加了对 EntityFramework 的引用,然后它起作用了。
  • 重点是,添加所有必要的DLL,以便编译器可以搜索所有的DLL,找到可以转换为IDisposable的基类。例如,EntityFramework dll 中存在实现IDisposableDataContext 类。
  • 就我而言,添加 System.Data.Linq 引用后,错误消失
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-02
  • 2021-06-29
  • 2023-03-29
  • 2021-09-20
  • 1970-01-01
  • 2011-01-25
  • 1970-01-01
相关资源
最近更新 更多