2

NameLINQ を使用して、EF を使用してデータベースから一連のオブジェクトを選択しようとしています。問題は、エラーが発生することです。

このコマンドに関連付けられた開いている DataReader が既に存在し、最初に閉じる必要があります。

Projectそのプロジェクトに関する情報を含む Type です。name クラスのナビゲーション プロパティです。このエラーの原因となる 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);
}
4

1 に答える 1

7

LINQ クエリはデータをフェッチせず、データをフェッチできる列挙型のみを作成するため、最後の項目をフェッチするまでデータ リーダーは開いています。

メソッドを使用して、使用するToList前にすべてのレコードをリストに読み込みます。

foreach (Name name in allNames.ToList())
于 2013-03-28T20:30:16.357 に答える