In Nerddinner Projekt, sehe ich, dass Abendessen hat Bezug auf Benutzer von Benutzernamen, wenn ich es nicht falsch verstanden habe. Ich erwartete, dass Abendessen durch eindeutige Kennungen mit den Benutzern in Beziehung stehen würde. Daran ist nichts falsch? Wenn wir den Benutzernamen des Benutzers ändern möchten, sollten wir die Relationen manuell aktualisieren. Bitte bedenken Sie alte Fragen, die sich fragen, warum es nicht besser ist, den Benutzernamen als eindeutige Kennung zu verwenden.Beziehung zwischen Benutzern und Abendessen in Nerddinner Projekt
Antwort
Ich habe nicht das genaue Datenbankschema im Hinterkopf, aber soweit ich weiß, wird die Benutzerverwaltung von den integrierten ASP.NET-Mitgliedschaftsfunktionen in der Mitgliedschaftsdatenbank verwaltet. Während Sie eine eindeutige ID von ASP.NET-Mitgliedschaftsanbietern erhalten können, kann der Typ dieser ID zwischen verschiedenen Anbietern variieren (z. B. Int32
in einem Anbieter und Guid
in einem anderen als providerUserKey Argument in der Membership-API vom Typ object
). Wenn Sie sich also von einem bestimmten Mitgliedschaftsanbieter isolieren möchten, sollten Sie sich lieber an den Benutzernamen halten. Es ist tragbar.
Benutzername ist eine eindeutige Kennung in diesem Beispiel. Sie müssen nicht int oder uniqueidentifier (Guid) als Schlüssel verwenden, wenn ein natürlicherer Schlüssel vorhanden ist. In diesem Fall ist der Benutzername innerhalb des Systems eindeutig und ein natürlicher Schlüssel für die Benutzerdatensätze.
Sie haben Recht; Die Benutzernamen werden als eindeutiger Bezeichner verwendet, der die Benutzer an Abendessen (oder an die RSVPs, soweit ich mich erinnere) bindet.
Es verwendet diese Werte, weil Benutzernamen bereits eindeutig sein müssen, also ist es eine eindeutige ID ... es ist nur keine numerische, automatisch generierte.
- 1. Nerd Abendessen, möglicherweise eine extreme noob Frage, Liste Abendessen
- 2. NerdDinner MVC und Html.Encode
- 3. Beziehung zwischen Bytecodebefehle und Prozessoroperationen
- 4. Beziehung zwischen HttpContext.Request.Cookies und HttpContext.Response.Cookies
- 5. Beziehung zwischen WebSecurityConfiguratorAdapter und ResourceServerConfigurerAdapter
- 6. Beziehung zwischen EXTJS und JSON
- 7. Beziehung zwischen custinvoiceTrans und GeneralJournalAccountEntry
- 8. Beziehung zwischen Hadoop und Datenbanken
- 9. Beziehung zwischen GEF und GMF?
- 10. Beziehung zwischen OAuth und JWT
- 11. Beziehung zwischen Vorverarbeitung und Übersetzung
- 12. Android Synchronisierungsdaten zwischen Benutzern
- 13. Geld zwischen Benutzern verschieben
- 14. Beziehung zwischen SVC-Dateien und WCF-Projekten?
- 15. Was ist ModelState.IsValid für in ASP.NET MVC in NerdDinner gültig?
- 16. Beziehung und Unterschied zwischen HAL und HATEOAS
- 17. Senden von Nachrichten zwischen Benutzern
- 18. Paypal Rückerstattung zwischen 2 Benutzern
- 19. scala: Beziehung zwischen Paket- und Quellverzeichnishierarchie
- 20. Beziehung zwischen Threads, Anwendungsdomänen und Worker-Prozesse
- 21. Beziehung/Unterschied zwischen HTML und CSS
- 22. Beziehung zwischen MembershipUser und IPrincipal -Objekt
- 23. Beziehung zwischen Haupt GUIs und Unter GUIs
- 24. Die Beziehung zwischen Vorwärts-Deklaration und Destruktoren
- 25. Beziehung zwischen "close" für PreparedStatement und Verbindung?
- 26. WCF: Beziehung zwischen NetworkCredential und Identitätswechsel
- 27. ASP.NET MVC: Beziehung zwischen Modellen und MembershipUsers
- 28. Beziehung zwischen NP-harten und unentscheidbaren Problemen
- 29. Beziehung zwischen Foreground Services und PARTIAL_WAKE_LOCK
- 30. Beziehung zwischen zwei Schnittstellen und zwei Klassen.
Die meisten MVC-Projekte verlassen sich auf Benutzername als primäre ID? – Freshblood
@Freshblood: Nein. Es ist eine Frage der persönlichen Präferenz. Wenn Sie einem Benutzer die Möglichkeit geben möchten, seinen Nutzernamen zu ändern, wäre die Verwendung seines Namens als primäre ID nicht die richtige Wahl. –
Dies ist sinnvoll, wenn beide der folgenden Bedingungen zutreffen: 1) Sie verwenden ASP.NET-Mitgliedschaftsanbieter, die Benutzerinformationen in einer separaten Datenbank speichern. 2) Sie haben keine Informationen an jeden Benutzer in Ihrer "contents" -Datenbank angehängt (d. H. Sie haben keine Tabelle in dieser Datenbank, die jeden Benutzer beschreibt). Wenn die zweite Bedingung nicht erfüllt ist, möchten Sie der Benutzerinformationstabelle wahrscheinlich einen Primärschlüssel zuweisen und diesen als Schlüssel verwenden. –