2011-01-19 16 views
0

SQLで、私は、例えば、これを行うだろうならば、私はEntity Framework 4.0 - EntityDataSource多対多リレーションシップクエリ?

、2エンティティ(AppRolesとAppUsers)によって選択を実行したい:

SELECT u.*, r.* FROM AppUsers u ,AppRoles r WHERE u.RoleID = r.RoleID 

また、それがコードでLINQの構文を使用して行うことができます-後ろに。

しかし、私は以下EntityDataSource

で行う方法がわからないが、私のマークアップです:

<asp:EntityDataSource ID="edsUsers" runat="server" 
    ConnectionString="name=ReferralDBEntities" 
    DefaultContainerName="ReferralDBEntities" EnableFlattening="True" 
    EntitySetName="AppUsers" 
    Include="AppRoles" 
    Select="it.AppUsers, it.AppRoles" 
    Where="it.AppUsers.RoleID = it.AppRoles.RoleID" 
    > 
</asp:EntityDataSource> 

しかし、それはエラーを示しています。

+1

仕事しかし、それはエラーを示している。 - **どのようなエラー?? ** – RPM1984

+0

何かのような:System.Data.EntitySqlException: 'アドレス'は 'Transient.collection [CCWinCustomer.CustomerAddress(Nullable = True、DefaultValue =)]のメンバーではありません。コレクションからプロパティを抽出するには、サブクエリを使用して、マルチパート識別子の9行目、26列目の近くのコレクションを反復処理する必要があります。 – Cheung

答えて

0

古い投稿には回答していません。

は、Select =「it.AppUsers、it.AppRoles」

を削除してくださいそうしないと私はあなたの2つのテーブル間の関係はEDMXでセットアップ方法を確認していません。それらもチェックしたいかもしれません。

1

あなたがそれぞれの役割

内のすべてのユーザーのリストをしたいと仮定して、ユーザー、つまり3テーブル構造を持っていると仮定すると、UserInRoles、のUserRole

その後

<asp:EntityDataSource ID="edsUsers" runat="server" 
    ConnectionString="name=ReferralDBEntities" 
    DefaultContainerName="ReferralDBEntities" EnableFlattening="True" 
    EntitySetName="UserInRoles" 
    Include="UserRole, User" 
    Select="it.User.FullName, it.UserRole.Name"> 
</asp:EntityDataSource> 

関連する問題