EntityDataSourceによる複数関係のバインディング

.net asp.net entity-framework entity-relationship

質問

私は自分のデータベース用にADO .Net Entity Data Modelを持っています。このモデルには、3つの関連テーブルがあります。 "Users" UserIdとその他の詳細を含むテーブル。 RunId、ApproverId、およびその他の詳細を含む「Run」テーブルUserIdおよびRunId列を含む「RunToUser」

関係は次のとおりです。Users.UserIdはRun.ApproverIdと1対1の関係です。User.UserIdはRunToUser.UserIdと多対多ですRun.RunIdはRunToUser.RunIdと多対多です

エンティティモデルでは、これは2つの別々の関係を持つ2つのテーブルとして表現されます。 1対1の関係、およびUsersとRunの間の多対多の関係。

RunのデータとUsersの関連データを編集するASP.net Formviewがあります。

ほとんどの場合、データバインディングは機能しています。ただし、Usersテーブルにentitydatasourceとしてバインドすると、常に1対1リレーションシップの関連付けが使用されます。

1対1マッピングのデータをラベルに、多対多のデータビューにデータをバインドできるように、entitydatasourceに特定のリレーションシップの関連付けを使用させるにはどうすればよいですか。

where句で "EXISTS"を試してみたところ、レコードが制限されていましたが、それでも、常に1対1の使用を要求され、すべてのデータバインドコントロールで単一のユーザーのみが表示されます。これはユーザーのentitydatasourceです。

  <asp:EntityDataSource ID="edsUsers_DET" runat="server" 
        ConnectionString="name=MyEntities" DefaultContainerName="MyEntities" 
        EntitySetName="Users" 
        Where="EXISTS(SELECT VALUE p FROM it.Run AS p WHERE p.RunID = @RunID)" >
        <WhereParameters>
           <asp:ControlParameter ControlID="fvRun"  Name="RunID" Type="Int32" />
        </WhereParameters>        
    </asp:EntityDataSource>

1つはラベル用に、もう1つはgridview用に2つのエンティティデータソースが必要になると思いますが、関連付けを指定する方法が決定するまで、先に進む方法はわかりません。 THX、 - J

受け入れられた回答

私は答えを見つけて、質問を閉じるのを忘れたのでただフォローしています。

同じ外部テーブルに複数の関連付けがある場合、それらはデフォルトで数字のサフィックスが付きます。したがって、RunテーブルにはUsersとUsers1の関連付けがありました。 EDSに "Include"パラメータを使用するときは、どの関連付けを使用するかを知っておく必要があります。EDSモデルを見るまでは、どれがわかりますか。

私は数字の接尾辞を持っているすべての私の協会の名前を変更したと思いました。 My Runテーブルに、UsersとApprover(Users1ではなく)の関連付けが追加されました。これにより、LINQとEDSの宣言部分の両方にどのリレーションシップを含めるかを簡単に判断できます。

EDSに両方の関連付けを含めたい場合は、次のようにします。

Include="Users,Approver"

最初はあまり明白ではなかったので、これが他の誰かに役立つことを願っています。


人気のある回答

データベースに1対1の関係がある場合は、これら2つのテーブルがエンティティモデル内で単一のテーブルとして表示されるようにエンティティモデルを構築できます。

このように構築すれば、バインディングはずっと簡単になります。



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ