Frage

Ich habe ein ADO .NET Entity Data Model für meine Datenbank. In diesem Modell Ich habe drei verknüpften Tabellen: „Benutzer“ Tabelle mit Benutzer-ID und anderen Details. „Run“ Tabelle, die RunId, ApproverId und andere Details enthält "RunToUser", die Benutzer-ID und RunId Spalten

enthält

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

Im Entity Modell wird dies als zwei Tabellen mit 2 getrennten Beziehungen zum Ausdruck gebracht. die Eins-zu-Eins-Beziehung und die Viele-zu-viele-Beziehung zwischen Benutzern und Ausführen.

Ich habe eine ASP.net Formuaransicht wo ich die Daten in Lauf sowie die zugehörigen Daten in Benutzer bearbeiten möchten.

Datenbindung funktioniert in den meisten Fällen. Jedoch, wenn ich binden an die Tabelle Benutzer als EntityDataSource es immer mit der Eins-zu-Eins-Beziehung Assoziation.

Wie kann ich die EntityDataSource zwingen, eine bestimmte Beziehung Assoziation zu verwenden, so dass ich die Daten von dem auf ein Etikett einer Eins-zu-Eins-Abbildung binden kann und das many-to-many zu einem Dataview?

Ich habe versucht, die „exists“ in der where-Klausel Rechenblatt die Datensätze begrenzt, aber es besteht nach wie vor auf immer die Eins-zu-eins mit und zeigt nur die einzelnen Benutzer in allen Databound-Kontrollen. Hier ist die EntityDataSource 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 nehme an, ich muss zwei Unternehmen Datenquellen eine für das Etikett und eine zweite für die gridview aber bis ich weiß, bestimmen, wie eine Verbindung specifiy ich weiß nicht, wie weiter verfahren ist. Vielen Dank, -J

War es hilfreich?

Lösung

folgend Gerade nach oben, da ich die Antwort gefunden und vergessen, die Frage zu schließen.

Ich entdeckte, dass, wenn Sie mehrere Verbände mit der gleichen Fremdtabelle haben sie ein numerisches Suffix standardmäßig erhalten. Also mußte Run Tabelle einen Benutzer und eine Nutzer1 Vereinigung. Wenn Sie die „Include“ Parameter für die EDS verwenden würden Sie müssen wissen, welche Assoziation zu verwenden, die offensichtlich nicht waren, bis Sie in dem EDS-Modell aussehen.

Ich ging dachte eine umbenannt alle meine Assoziationen, die die numerischen Suffixe hatte. Mein Lauf Tabelle hat jetzt eine Benutzer und eine genehmigende (statt Nutzer1) Vereinigung. Dies läßt mich leicht die Beziehungen Schiff entziffert sowohl für LINQ und die EDS deklarativen Teile aufzunehmen.

Wenn ich für die EDS beiden Verbände einzubeziehen wollte ich etwas tun würde, wie:

Include="Users,Approver"

Hoffe, dass dies jemand anderes hilft, da es mir zuerst nicht sehr offensichtlich war.

Andere Tipps

Wenn Sie eine Eins-zu-Eins-Beziehung in Ihrer Datenbank können Sie Ihr Unternehmen Modell bauen, so dass diese beiden Tabellen als eine einzige Tabelle erscheinen in Ihrem Entitätsmodell.

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top