1

私はエンティティフレームワークに不慣れで、これを無駄に調査しました.....正しい質問をするのに十分な知識がないかもしれませんが。

user_ISNを主キーとするusersというテーブルがあります。ユーザーは他のユーザーの友達になることができるので、ユーザーのuser_ISNと友達のuser_ISNを保持するfriendsテーブルがあります。多対多の関係を作成します。エンティティフレームワークは、これをナビゲーションプロパティuser.friendsとの自己結合としてモデル化しており、もちろんユーザーテーブルに戻ります。

グリッドビューを使用して、現在ログインしているユーザーの友達のみを表示するASP.NetWebページを作成する必要があります。現在のユーザーのISNを保持するデータソースのパラメーターを作成しました。

現在のユーザーの友達であるユーザーだけを選択する方法がわかりませんでした。私が試みるすべては私が理解できない様々なエラーを私に与えます。私を正しい方向に向けてもらえますか?私は追加の調査を喜んで行いますが、何を検索すればよいのかさえわからないところにいます。

ありがとうございました。

4

1 に答える 1

1

EntityDataSourceコントロールのマークアップに、「インクルード」属性を追加します。

例えば:

      <asp:EntityDataSource ... Include="Friends" ... />

これは、テーブルのエンティティフレームワークによって提供されるナビゲーションプロパティの結果として機能します。

ここで、EntityDataSourceコントロールの「Where」プロパティも変更する必要があります。プロパティウィンドウから、「Where」プロパティを選択します。これにより、「式エディター」ウィンドウが起動します。User_ISNのパラメーターを作成する必要があります。次に、リストから「パラメータソース」を指定します。User_ISNをページに渡す方法に適用できるオプションを選択します(たとえば、URLに値を渡す場合はQueryString)。最後の「Where」式は次のようになります。

      it.User_ISN == @User_ISN

この時点で、現在のユーザーのすべての友達を結果に含めるようにEntityDataSourceに指示し、現在のユーザーのUser_ISNで結果をフィルター処理する方法も指定しました。

このアプローチは、TemplateField列を使用する場合にのみ機能することに注意してください。GridViewでBoundField列を使用する場合、これは機能しません。

これで問題が解決しない場合は、表示されるエラーメッセージを入力してください。

于 2011-11-24T19:24:13.377 に答える