关闭数据读取器时调用"读取"不是使用实体框架数据库优先方法的有效操作错误



我正在创建一个Web API,该Web API将使用Entity Framework数据库 - 第一方法使用存储过程从表中获取信息。ListAllTeams_Result是在实体框架中创建的复杂类型对象。我正在循环浏览导入函数GetAllTeams()并填充复杂类型。试图访问数据访问层

时,我的业务层中会遇到错误

我遇到的错误是以下代码

var team = _teamRepository.GetAllTeams();

查询的结果不能超过一次。

注意:此错误在内部堆栈中,并且不会阻止应用程序执行

foreach (var t in team)

当数据读取器关闭时调用"读取"不是有效的操作。

注意:这停止执行

业务层

public IEnumerable<TeamDto> GetTeam()
{
   var team = _teamRepository.GetAllTeams();
   if (team != null)
   {
       foreach (var t in team.ToList())
       {
           yield return Mapper.Map<TeamDto>(t);
       }
   }
   yield break;
}

dataAccess层:

public IEnumerable<ListAllTeams_Result> GetAllTeams()
{
    using (var mcrContext = new MCREntities())
    {
        return (from team in mcrContext.ListAllTeams("")
                select new ListAllTeams_Result
                        {
                            TeamID = team.TeamID,
                            TeamDescription = team.TeamDescription,
                            CountryCode = team.CountryCode,
                            CreatedBy = team.CreatedBy,
                            CreatedDate = team.CreatedDate,
                            ModifiedBy = team.ModifiedBy,
                            ModifiedDate = team.ModifiedDate
                        });
    }
}

我找到了问题所在。我不得不在返回中添加tolist

using (var mcrContext = new MCREntities())
        {
            return (from team in mcrContext.ListAllTeams("")
                select new ListAllTeams_Result
                {
                    TeamID = team.TeamID,
                    TeamName = team.TeamName,
                    TeamDescription = team.TeamDescription,
                    CountryCode = team.CountryCode,
                    CreatedBy = team.CreatedBy,
                    CreatedDate = team.CreatedDate,
                    ModifiedBy = team.ModifiedBy,
                    ModifiedDate = team.ModifiedDate
                }).ToList();
        }

最新更新