2009-06-19 10 views
3

私は非常に単純なコードだと思っていましたが、結果は私を困惑させています。私はLINQを使用してエンティティにクエリを行い、結果を繰り返して配列を作成しています。私はデータベースとの間のトラフィックを監視しており、すべてがうまく見えます。 LINQがSQLに送信するクエリをコピーしてSQLに対して直接実行すると、期待される結果が得られます。しかし、結果を繰り返したり、結果を見ることさえすれば、すべてのレコードはまったく同じです。これはNOT SQLが返すものです。私は間違って何をしていますか?LINQエンティティの結果を反復する

var eventList = from e in entityContext.AuctionSet select e; 

ArrayList DayArray = new ArrayList(); 
int i = 0; 

foreach (Auction ae in eventList) 
{ 
    // If I put a watch on eventList all the records are the same! 
    Auction temp = ae; // Even tried copying to a temp value per another solution 

    // Even though the records are different in the database, 
    // and the correct number of records are returned, EVERY "ae" instance 
    // has the exact same values! 
    DayArray.Add(new { 
       id = i, 
       title = temp.County.ToString() 
       }); 
      i++; 
} 

ありがとうございます!

EDIT:エンティティがビューから来ていることを忘れてしまいました。これは、主キーについてのコメントがあれば意味があります。

+3

好奇心から離れて、どうしてArrayListを使用していますか?なぜあなたはリストを使用していません? – BFree

+0

"eventList"の種類は何ですか? –

+0

このビットのコードの後に​​JSONにシリアル化されているため、ArrayListを使用しています。 –

答えて

7

実際に各行が同じ値を持つときに、何かがプライマリキーであるとEFが考えるようにプライマリキーを誤って構成したことはありますか?重要なことに、EFは以前に見たのと同じタイプ+主キーを持つオブジェクトを見るたびにという同じインスタンスを与える義務があります。

すべてのあなたの記録は次のようになりそうだとすれば:

id | title | ... 
-----+-------+------- 
1 | Foo | ... 
1 | Bar | ... 
1 | Baz | ... 
... 

とEFはidが主キーであることを考えれば、それは同じオブジェクトにバックするたびにあなたを与えるだろう - そう、あなたが表示されますFooFooFoo ...

+0

Nice one Marc。素晴らしい創造性! –

+0

これは非常に意味があります。エンティティは実際にビューから来ているので、私の推測はあなたが正しいことです。しかし、これは、ビューから出てくるエンティティをどのように反復するのかという疑問を抱いています。何か案は? –

+0

ビューはどのように見えますか? id列のようなデータが重複していますか?私のローカルIDEで、明白なオプションがあるかどうかを調べるために、素早く見ていきます。 –

関連する問題