Frage

Nur mit dieser als Beispiel ...

Hier sind die Spalten in meiner Tabelle Userprofile:
   Profileid (Primärschlüssel)
   UserID (Fremdschlüssel)
   Adresse
   Phone

mit LINQ to Entities

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

  1. 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?

  2. 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)

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

War es hilfreich?

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.

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