Bindung mehrerer Bindungen mit EntityDataSource

.net asp.net entity-framework entity-relationship

Frage

Ich habe ein ADO .Net Entity Data Model für meine Datenbank. In diesem Modell habe ich drei verwandte Tabellen: "Benutzer" Tabelle mit Benutzer-ID und anderen Details. "Run" Tabelle mit RunId, ApproverId und anderen Details "RunToUser" mit UserId- und RunId-Spalten

Die Beziehungen lauten wie folgt: Users.UserId ist eine Eins-zu-Eins-Beziehung zu Run.ApproverId. User.UserId ist mit RunToUser.UserId viel zu viele. Run.RunId ist mit RunToUser.RunId zu viele

Im Entitätsmodell wird dies als zwei Tabellen mit zwei separaten Beziehungen ausgedrückt. die Eins-zu-Eins-Beziehung und die Viele-zu-Viele-Beziehung zwischen Benutzern und Ausführen.

Ich habe ein ASP.net-Formview, in dem ich die Daten in Run sowie die zugehörigen Daten in Users bearbeiten möchte.

Datenbindung funktioniert in den meisten Fällen. Wenn ich jedoch als Entitydatasource an die Users-Tabelle binde, wird immer die Eins-zu-Eins-Beziehung verwendet.

Wie kann ich die Entitätsdatenquelle dazu zwingen, eine bestimmte Beziehungszuordnung zu verwenden, damit ich die Daten von der Eins-zu-Eins-Zuordnung an ein Label und die Viele-zu-Viele-Daten an eine Datenansicht binden kann?

Ich habe die "EXISTS" in der where-Klausel ausprobiert, die die Datensätze einschränkt, sie besteht jedoch immer darauf, das Eins-zu-Eins-Verhältnis immer zu verwenden und zeigt nur den einzelnen Benutzer in allen Steuerelementen des Datenbündels an. Hier ist die Entity-Datenquelle für die Benutzer:

  <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>

Ich gehe davon aus, dass ich zwei Entitätsdatenquellen für die Beschriftung und eine für die Rasteransicht benötigen wird. Bis ich jedoch weiß, wie eine Zuordnung festgelegt wird, kann ich nicht weiter vorgehen. Thx, -J

Akzeptierte Antwort

Ich habe nur nachgesehen, seit ich die Antwort gefunden habe, und ich habe vergessen, die Frage zu schließen.

Ich habe festgestellt, dass, wenn Sie mehrere Verknüpfungen mit derselben Fremdtabelle haben, diese standardmäßig ein numerisches Suffix erhalten. Die Tabelle "Ausführen" hatte also eine Benutzer- und eine Benutzer1-Zuordnung. Wenn Sie den "Include" -Parameter für das EDS verwenden, müssen Sie wissen, welche Assoziation Sie verwenden sollen, was nicht offensichtlich ist, bis Sie das EDS-Modell betrachten.

Ich dachte nach und benannte alle meine Assoziationen um, die die numerischen Suffixe hatten. Meine Ausführungstabelle verfügt jetzt über eine Benutzer- und eine Genehmigungsassoziation (anstelle von Benutzer1). Auf diese Weise kann ich leicht herausfinden, welche Beziehungen für LINQ und die deklaratorischen EDS-Abschnitte enthalten sind.

Wenn ich beide Verbände in die EDS aufnehmen wollte, würde ich Folgendes tun:

Include="Users,Approver"

Hoffe, das hilft jemand anderem, da es mir anfangs nicht sehr offensichtlich war.


Beliebte Antwort

Wenn Sie eine Eins-zu-Eins-Beziehung in Ihrer Datenbank haben, können Sie Ihr Entitätsmodell so erstellen, dass diese beiden Tabellen als eine einzige Tabelle in Ihrem Entitätsmodell angezeigt werden.

Wenn Sie es so bauen, wird Ihre Bindung viel einfacher.



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum