Wie ordne ich mithilfe von Entity Framework Code First mit Fluent API eine Lookup-Tabelle zu?

8

Ich bin neu in asp.net mvc und Entity-Framework-Code zuerst anlernen, ich bin nicht so scharf auf Datenbanken. Ich entschuldige mich im Voraus für falsche Terminologie oder die Art, wie ich die Dinge verstehe.

Nun zu der Frage. Ich habe folgende Modelle:
Benutzermodell

%Vor%

Rollenmodell

%Vor%

Was ich schließlich möchte, ist eine Möglichkeit, den Ef-Code-First-Ansatz mit der fließenden API zu verwenden, um die UserId und RoleId einer User_Role-Tabelle mit einer Eins-zu-Viele-Beziehung zuzuordnen. Ein Benutzer kann mehrere Rollen haben:

Ich nehme an, dass das, was in dieser Frage getan wird, der richtige Ansatz ist , außer dass dort der Autor eine Viele-zu-Viele-Verbindung verwendet hat. Ich habe es so versucht, aber der Teil mit u = & gt; u.users gibt mir einen Fehler (ich gehe davon aus, dass es keine Benutzereigenschaft im Modell gibt, also hat er seine Frage beantwortet, aber seine Frage nicht aktualisiert?)

Meine Frage: Was ist der genaue flüssige API-Code, damit Ef diese Tabelle für mich generiert?

Dinge, über die ich mich nicht sicher bin: (Fühlen Sie sich frei zu ignorieren)

  • Ist das der richtige Ansatz für mein Problem?
  • Sobald ich die Nachschlagetabelle habe, ist das immer noch der richtige Weg, meine Navigationseigenschaft zu deklarieren, so dass ich sie später wie user.Roles verwenden und ihre Rollen abrufen kann?
  • Wo wird die RoleId im Benutzermodell aus der Tabelle "Roles" oder User_Role?
  • eingefügt?
  • Hat eine ID in der Lookup-Tabelle irgendeinen Nutzen?

Vielen Dank im Voraus! Ich schätze Ihre Expertise sehr.

    
edgarpetrauskas 14.03.2014, 09:43
quelle

1 Antwort

23
___ tag123database ___ Eine Datenbank ist eine organisierte Sammlung von Daten. Es ist die Sammlung von Schemas, Tabellen, Abfragen, Berichten, Ansichten und anderen Objekten. Die Daten sind typischerweise so organisiert, dass sie Aspekte der Realität so modellieren, dass sie Prozesse unterstützen, die Informationen benötigen. Verwenden Sie dieses Tag, wenn Sie Fragen zum Entwerfen einer Datenbank haben. Wenn es sich um ein bestimmtes Datenbankverwaltungssystem (z. B. MySQL) handelt, verwenden Sie stattdessen dieses Tag. ___ qstnhdr ___ Wie ordne ich mithilfe von Entity Framework Code First mit Fluent API eine Lookup-Tabelle zu? ___ tag123aspnetmvc4 ___ ASP.NET MVC 4 ist die vierte Hauptversion der ASP.NET Model-View-Controller-Plattform für Webanwendungen. ___ tag123efcodefirst ___ EF Code-First ist eine Möglichkeit, das Microsoft Entity Framework mit POCO-Klassen zu verwenden, im Gegensatz zu Model-first oder DB-first. ___ tag123fluent ___ Fluent-Schnittstelle ist eine API, die eine Verkettung von Methoden ermöglicht, um Code lesbarer zu machen. ___ qstntxt ___

Ich bin neu in asp.net mvc und Entity-Framework-Code zuerst anlernen, ich bin nicht so scharf auf Datenbanken. Ich entschuldige mich im Voraus für falsche Terminologie oder die Art, wie ich die Dinge verstehe.

Nun zu der Frage. Ich habe folgende Modelle:
Benutzermodell

%Vor%

Rollenmodell

%Vor%

Was ich schließlich möchte, ist eine Möglichkeit, den Ef-Code-First-Ansatz mit der fließenden API zu verwenden, um die UserId und RoleId einer User_Role-Tabelle mit einer Eins-zu-Viele-Beziehung zuzuordnen. Ein Benutzer kann mehrere Rollen haben:

Ich nehme an, dass das, was in dieser Frage getan wird, der richtige Ansatz ist , außer dass dort der Autor eine Viele-zu-Viele-Verbindung verwendet hat. Ich habe es so versucht, aber der Teil mit u = & gt; u.users gibt mir einen Fehler (ich gehe davon aus, dass es keine Benutzereigenschaft im Modell gibt, also hat er seine Frage beantwortet, aber seine Frage nicht aktualisiert?)

Meine Frage: Was ist der genaue flüssige API-Code, damit Ef diese Tabelle für mich generiert?

Dinge, über die ich mich nicht sicher bin: (Fühlen Sie sich frei zu ignorieren)

  • Ist das der richtige Ansatz für mein Problem?
  • Sobald ich die Nachschlagetabelle habe, ist das immer noch der richtige Weg, meine Navigationseigenschaft zu deklarieren, so dass ich sie später wie user.Roles verwenden und ihre Rollen abrufen kann?
  • Wo wird die RoleId im Benutzermodell aus der Tabelle "Roles" oder User_Role?
  • eingefügt?
  • Hat eine ID in der Lookup-Tabelle irgendeinen Nutzen?

Vielen Dank im Voraus! Ich schätze Ihre Expertise sehr.

    
___ antwort22403019 ___

Zuerst sollten Sie die Eigenschaft RoleId im User -Modell loswerden. Wenn Sie das als Fremdschlüssel verwenden, wird angezeigt, welche einzelne Rolle ein Benutzer hat. Da ein Benutzer viele Rollen haben kann, sollte der Fremdschlüssel nicht in der Benutzertabelle, sondern in der Mapping-Tabelle enthalten sein.

Sie haben also eine Viele-zu-Viele-Beziehung zwischen Benutzern und Rollen, und Entity Framework kann die benötigte Zuordnungstabelle automatisch erstellen, ohne dass Sie etwas konfigurieren müssen.

Wenn Sie einfach eine Roles -Eigenschaft in der Entität User und eine Users -Eigenschaft in der Entität Role haben, wird EF herausfinden, dass Sie zwischen diesen beiden eine number-to-many erstellen möchten eine Tabelle mit den Primärschlüsseln beider Entitäten als kombinierter Primärschlüssel, der zum Zuordnen von Benutzern zu Rollen verwendet wird.

Wenn Sie User aus der Datenbank laden, können Sie mit der Roles navigation -Eigenschaft herausfinden, welche Rollen der Benutzer hat, und Sie können Role laden, um herauszufinden, welche Benutzer sich in dieser Rolle befinden / p>

Der einfachste Weg, um es zum Laufen zu bringen, wäre etwa so:

%Vor%

Das Ausführen dieses Codes führt zu 3 Tabellen wie folgt:

    
___
Peter Hansen 14.03.2014, 10:54
quelle