1

您好,我收到一个错误,我无法解释。

我正在尝试使用 foreach 循环解析 EntityCollection

这是我得到的错误:

foreach 语句无法对
“System.Data.Objects.DataClasses.EntityCollection<MyEntity>”类型的变量进行操作,
因为“System.Data.Objects.DataClasses.EntityCollection<MyEntity>”
不包含“GetEnumerator”的公共定义

这真的很奇怪,因为我有一个控制台应用程序,而且我工作得很好。但是后来我想做一个网络应用程序。

使用控制台应用程序,我可以执行 foreach,但在 Web 应用程序中出现错误。

这真让我抓狂。请帮忙 :)

这是代码:

foreach (INITIATIVE_REF_STRATEGIC_AXIS stratAxe in i.INITIATIVE_REF_STRATEGIC_AXIS)
{

}

i.INITIATIVE_REF_STRATEGIC_AXIS是类型System.Data.Objects.DataClasses.EntityCollection<INITIATIVE_REF_STRATEGIC_AXIS>

4

2 回答 2

3

这听起来像您缺少程序集参考。

您的代码给出了编译错误,它还没有正确刷新所有引用。因此它为什么看不到你知道的东西。

它有点像猪...去删除所有bin目录清理并重建所有并交叉手指。

失败了就开始从项目中删除引用并阅读它们。

通常最终会修复。

您的输出中可能还有另一个构建错误...修复可能会让程序集编译,然后允许编译其他东西来解决您的问题。

如果您按编号列对构建错误进行排序并首先修复最低编号,您可能会发现事情更容易。

于 2013-06-04T13:28:16.787 回答
2

Linq 扩展方法不在上下文中,这就是您收到此错误的原因。

1)验证项目是否有参考:

System.Data.Entity.dll

2) 如果您使用的是 ASP.NET MVC,请将其放在视图的顶部

@using System.Linq;

或者在视图文件夹中的 web.config 中:

<system.web.webPages.razor>
  <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  <pages pageBaseType="System.Web.Mvc.WebViewPage">
    <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
        <add namespace="System.Linq" />
    </namespaces>
  </pages>
</system.web.webPages.razor>

希望这对你有帮助!

于 2013-06-04T13:31:21.970 回答