必须关闭DataReader首先和我的LINQ查询

ios*_*s85 2 c# linq

我试图使用LINQ Name从我的数据库中选择一堆对象使用EF.问题是我收到一个错误:

已经有一个与此命令关联的打开DataReader,必须先关闭它.

Project是包含有关该项目的信息的Type.它是名称类的导航属性.我的LINQ查询导致此错误有什么问题.

var allNames = from n in _db.DCENames
               orderby n.BrandName ascending
               select n;

foreach (Name name in allNames)
{
    NameDbModel data = new NameDbModel();
    data.id = name.Id;
    data.BrandName = name.BrandName; 
    data.MarkType = name.Project.MarkType;
    data.DateAdded = name.DateAdded;
    data.PrimarySector = name.Project.PrimarySector;
    data.ProjectName = name.Project.ProjectName; 
    data.Status = name.Project.ProjectStatus;
    data.ProjectId = name.Project.ProjectId;
    data.Notes = "";
    model.Add(data);
}
Run Code Online (Sandbox Code Playgroud)

Guf*_*ffa 7

LINQ查询不会获取数据,它只会创建一个可以获取数据的枚举,因此数据读取器在您获取最后一项之前一直处于打开状态.

在使用之前,使用该ToList方法将所有记录读入列表:

foreach (Name name in allNames.ToList())
Run Code Online (Sandbox Code Playgroud)