Wie sind Fremdschlüssel und Guids mit zu Entitäten in LINQ behandelt?
Frage
Nur mit dieser als Beispiel ...
Hier sind die Spalten in meiner Tabelle Userprofile:
Profileid (Primärschlüssel)
UserID (Fremdschlüssel)
Adresse
Phone
jetzt, wenn ich will einen neuen Benutzer der Datenbank hinzufügen möchten, hier ist, was ich tue:
UserProfile profileToAdd;
profileToAdd.ProfileID = 0;
profileToAdd.Address = "123 MyStreet";
profileToAdd.PhoneNumber = "123-4567";
/* How do I add in the UserID here? */
_myDB.AddToUserProfiles(profileToAdd);
Ein paar Fragen ...
-
Gibt es etwas Besonderes mit Fremdschlüssel zu tun, die ich wissen muss, oder kann ich es zuweisen, so wie ich mit Adresse oder Phone tat?
-
Die Benutzer-ID ist eine Guid, und ich brauche es aus dem aktuellen Benutzer UserId abzuzurufen. Ich kann keinen Zugriff auf Membership-Klasse scheint oder Benutzerklasse zu erhalten (Dies ist eine C # Bibliothek so Erraten ich es eine Referenz muss irgendwie, aber mein Projekt ist bereits Referenzierung meiner Bibliothek, so kann ich nicht zurück verweisen oder mich einen kreisförmigen dependancy)
-
Ich verstehe nicht ganz, wie mit Guids beschäftigen. Wenn
getProfileByUserName(string userName)
Umsetzung, hier ist mein Problem ...
Zunächst einmal kann ich nicht den Benutzer-ID abrufen, hier ist was ich versuchte:
Guid currUser = (Guid)from user in _ myDB.aspnet_Users
where user.UserName == userName
select new { user.UserId };
Aber es sagt, dass ich es nicht zu einem Guid aus irgendeinem Grunde werfen kann.
Wenn Sie Einblick in eine dieser Fragen liefern kann ich würde es sehr schätzen!
Danke,
Matt
Lösung
Wenn die Datenbank die richtigen Randbedingungen für die Fremdschlüsselbeziehung enthält, soll ein Mitglied in Ihrer UserProfile
Klasse sein, die auf ein User
Objekt. Der Name könnte ein wenig seltsam, wie UserProfileUser
oder so ähnlich sein.
Sie können jedoch diesen Namen im Diagramm ändern. Setzen Sie einfach einen Zeiger auf das Objekt Benutzereinheit und der Rahmen wird die korrekte ID für Sie zuweisen.