2011-12-15 8 views
1

私はEF4を使用するASP.NET Webアプリケーションを持っています。 SQL ServerのビューからレコードをフィルタするEntityDataSourceを持つページがあります。ビューレコードを表示するために、EntityDataSourceにバインドされたGridViewがあります。EntityDataSourceは、異なるレコードを返す代わりに最初のレコードを繰り返しますか?

このアプローチは、EntityDataSourceに関連付けられたEntitySetがSQLサーバーテーブルにリンクされている多くのページで使用しました。私は初めてビューにバインドされているエンティティセットを使用しようとしています。

EntityDataSourceは、where句のパラメータに応じて正しい行数を返します。

ただし、EntityDataSourceから返される各行はまったく同じです。

私はGridViewのRowDataBoundイベントをデバッグし、バインドされているすべての行がまったく同じ内容であることを確認しました。

何か面白いのは、前後にページを移動すると、繰り返しているレコードが変わるということです。私は、あるページの最初の(または最後の)レコードが何とか繰り返されていると思います。

これは、EFまたはEntityDataSourceのバグのようです。誰もこの種の行動を見たことがありますか、それをトラブルシューティングする方法についてアドバイスがありますか?

答えて

3

これは、ビューから戻ってくるエンティティの主要なプロパティが一意でない場合に、これが他のシナリオで起こるのを見ました。 EFは単一のエンティティのみを実現し、したがって問題を終了させるでしょう。

エンティティキーとしてマークされたプロパティは、ビュー内で一意ですか?

+0

うわー。私の見解は、報告専用に設計されたものであり、簡潔でユニークなキーが定義されていませんでした。各行はユニークですが、そのことを確認するには行全体を見る必要があります。 edmxのキャンバスは、ユニークでなければならないものを「単純化する前提」を作りました。 ORMがこのようなことについて戸惑う必要があることは意味があります。ビューが更新可能でないことを確認し、次に新しいエンティティを構成するものについてよりスマートな仮定を立てることが十分にスマートだったらそれはいいでしょう。このソリューションをありがとう! –

+0

偉大な発見。これは、EFの中で最も直観的なやり方でなければなりません。 – BigMomma

関連する問題