Entity Framework - Ein Element mit dem gleichen Schlüssel wurde bereits Hinzugefügt. - Fehler beim Versuch, zu definieren, foreign-key-Beziehung

Habe ich eine Entität mit einem Fremdschlüssel-Beziehung zu einer asp.net Mitgliedschaftsanbieter Benutzer-Tabelle.

Dieser Teil des Modells sieht wie folgt aus:

Entity Framework - Ein Element mit dem gleichen Schlüssel wurde bereits Hinzugefügt. - Fehler beim Versuch, zu definieren, foreign-key-Beziehung

Ich kann nicht scheinen, um ordnen Sie die foreign key-Beziehung, wenn das einfügen des Benutzer-Tabelle-Datensatz, den Datensatz mit dem Fremdschlüssel auf die aspnet_Users Tabelle. Ich erhalte die Fehlermeldung:

"Ein Element mit demselben Schlüssel wurde bereits
Hinzugefügt worden.

Den code, den ich verwende sieht so aus:

UserAdmin userToAdd = new UserAdmin();
...
userToAdd.aspnet_Users = membershipUser;
//line above OR line below
userToAdd.aspnet_UsersReference.EntityKey = new System.Data.EntityKey("ProjectEntities.aspnet_Users", "UserId", membershipUser.UserId);

db.AddToUsers(userToAdd);
db.SaveChanges();

Ist das Problem, das ich verlange das EF hinzufügen eines neuen aspnet_Users - Tabelle-Datensatz (Datensatz für die zugehörige Primärschlüssel der Tabelle), wenn der Datensatz schon da ist?

Wie würde ich weisen Sie eine foreign key-Wert zu einer Person, wo der Primärschlüssel-Datensatz bereits vorhanden ist?

Aktualisierte test-code-block:

MembershipUser membershipUser = Membership.CreateUser("[email protected]", "pass", "[email protected]");

Entities db = new Entities();
UserAdmin newUser = new UserAdmin();
newUser.Name = "blah";
newUser.DateAdded = DateTime.Now;

Guid key = new Guid(membershipUser.ProviderUserKey.ToString());
aspnet_Users membershipUserRecord = db.aspnet_Users.Where(u => u.UserId == key).FirstOrDefault();
newUser.aspnet_Users = membershipUserRecord;
//newUser.aspnet_UsersReference.EntityKey = new System.Data.EntityKey("Entities.aspnet_Users", "UserId", membershipUserRecord.UserId);
db.ObjectStateManager.ChangeObjectState(membershipUserRecord, EntityState.Unchanged);

db.AddToUsers(newUser);
db.SaveChanges();

Dieser code erzeugt die Fehlermeldung:

"Ein Element mit demselben Schlüssel wurde bereits Hinzugefügt.

  • Ist membershipUser verfolgt von der (gleichen) DataContext?
  • Ja der membershipUser-Datensatz wurde abgerufen, indem die gleichen entity-Modell-Instanz wird verwendet, um ein commit der neuen Benutzer-Datensatz.
InformationsquelleAutor BrooklynDev | 2010-08-29
Schreibe einen Kommentar