1

roleID で並べ替えられた特定のロールを持つすべてのユーザー エンティティを選択する EntityDataSource があります。(ロールごとにグループ化されたユーザーを表示したいので、順序の部分が重要です)。

次のコード:

<asp:EntityDataSource ID="UserDataSource" runat="server" ConnectionString="name=MyEntities" 
    DefaultContainerName="MyEntities" EnableFlattening="False"
    EntitySetName="Users" Where="EXISTS(SELECT VALUE u FROM it.UserRoles AS u)" OrderBy="it.UserRoles.RoleId">
</asp:EntityDataSource>

次のエラーが発生します。

「RoleId」は「Transient.collection[MyModel.UserRole(Nullable=True,DefaultValue=)]」のメンバーではありません。コレクション要素のプロパティを抽出するには、サブクエリを使用してコレクションを反復処理します。

Include="UserRoles" を追加しても役に立ちません。


4

2 に答える 2

2

わかった。正しい構文を見つけました。ここにあります:

OrderBy="ANYELEMENT(SELECT VALUE SqlServer.MIN(r.RoleId) From it.UserRoles AS r)"

于 2013-01-30T11:30:36.460 に答える
0

問題は、1 人のユーザーが複数のUserRole. そのため、ロール ID を使用して一連のユーザーを注文することはできません。特定のユーザーに関連付けられた単一のロール ID はありません。それはエラーメッセージです-it.UserRolesコレクションであり、ロールIDプロパティがありません。そのプロパティUserRoleは、コレクションの要素 ( ) に存在します。

順序ロジックについてはわかりませんが (ユーザーが複数のロールを使用できることを考慮して)、ユーザーがロールを 1 つだけ持つことができると仮定すると、次のような式を使用it.UserRoles.First().RoleIdして順序を取得できます。より良い方法は、モデルを編集して、User-UserRole関係で正しい多重度を表示することです。

于 2013-01-29T08:08:45.080 に答える