0

http://msdn.microsoft.com/en-us/data/jj591506にあるチュートリアルを使用して、エンティティ フレームワークについて独学しています。

using (var db = new DatabaseEntities())
{
            // Section 1
            var section = new Section
            {
                SectionID = 1,
                SectionLetter = "d"
            };
            db.Sections.Add(section);
            db.SaveChanges();

            // Section 2

            var query = from b in db.Sections 
                        orderby b.SectionLetter
                        select b;

            foreach (var item in query)
            {
                this.Title = item.SectionLetter;
            }
}

上記のコードのセクション 1 とセクション 2 を一緒に使用すると、うまく機能します。ただし、セクション 2 だけを実行すると、タイトルは変更されません。つまり、単一のアイテムが返されないため、foreach ループに入りません。ループに入らない理由がわかりません。

この質問にはおそらく明らかな答えがあると思いますが、同僚に尋ねるのではなく、スタックオーバーフローで質問して、同じ質問を持つ他の人が答えを見つけられるようにする必要があると思いました。

この質問に手がかりがあるのではないかと思います: System.Data.Entity not working as expected for MVC Entity Framework。残念ながら、私はそれを解決できないようです。

4

2 に答える 2

1

var db = new DatabaseEntities()行がないデータベースに回線が接続しているようです。Connectionのプロパティをチェックしdbて、正しいサーバー/インスタンス/ファイルにあることを確認します。

で「クイックウォッチ」を実行すると、テーブルの内容を確認できるはずですquery.ToArray()

于 2012-12-30T11:20:12.430 に答える
1

セクション 2 のみを実行した場合:

var query = from b in db.Sections 
            orderby b.SectionLetter
            select b;

query変数が実際に結果をもたらすことを確認しますか? クエリの内容がわかるまでデバッグしましたか?

  var query = (from b in db.Sections 
              orderby b.SectionLetter
              select b).ToList();

これを試して、その直後にブレークポイントを置いてください。次に、クエリ変数に含まれる要素の数を確認します。0 がある場合、foreach があまり機能しないことは論理的です。

実際のデータベースをチェックして、そこにレコードがあるかどうかを確認しましたか?

于 2012-12-30T11:21:21.060 に答える