我试图使用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)
LINQ查询不会获取数据,它只会创建一个可以获取数据的枚举,因此数据读取器在您获取最后一项之前一直处于打开状态.
在使用之前,使用该ToList方法将所有记录读入列表:
foreach (Name name in allNames.ToList())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3304 次 |
| 最近记录: |