Ich habe ein Unternehmen mit einer Fremdschlüsselbeziehung zu einer asp.net Mitgliedschaftsanbieter Benutzer-Tabelle.Entity Framework - Ein Artikel mit demselben Schlüssel wurde bereits hinzugefügt. - Fehler beim Versuch, Fremdschlüsselbeziehung zu definieren
Dieser Teil des Modells sieht wie folgt aus:
Ich kann die Fremdschlüsselbeziehung zu vergeben scheinen, wenn der Benutzer Tabellensatz eingeführt wird, die Aufzeichnung der Fremdschlüssel für die Tabelle mit aspnet_Users
. Ich halte den Fehler bekommen:
An item with the same key has already been added.
Der Code Ich verwende sieht aus wie:
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, dass ich das EF bin gefragt eine neue aspnet_Users
Tabelle Datensatz hinzufügen (der Datensatz für die zugehörige Primärschlüsseltabelle) wenn dieser Datensatz bereits vorhanden ist?
Wie würde ich einen Fremdschlüssel Wert zu einer Einheit zuzuweisen, wo der Primärschlüssel Satz bereits vorhanden ist?
Aktualisiert Testcodeblock:
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 den Fehler:
An item with the same key has already been added.
Ist 'membershipUser' durch die (gleichen) Datacontext verfolgt? –
Ja, der MembershipUser-Datensatz wurde von derselben Instanz des Entitätsmodells abgerufen, mit der der neue Benutzerdatensatz festgeschrieben wurde. – BrooklynDev