У меня есть объект с отношением внешнего ключа к таблице пользователей поставщика членства asp.net.
Эта часть модели выглядит так:
Я не могу назначить отношение внешнего ключа при вставке записи таблицы Users, записи, содержащей внешний ключ, в таблицу aspnet_Users
. Я получаю сообщение об ошибке:
Предмет с таким же ключом уже
было добавлено.
Код, который я использую, выглядит следующим образом:
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();
Проблема в том, что я прошу EF добавить новую запись таблицы aspnet_Users
(запись для связанной таблицы первичного ключа), когда эта запись уже существует?
Как бы я присвоил значение внешнего ключа объекту, где запись первичного ключа уже существует?
Обновлен блок кода теста:
MembershipUser membershipUser = Membership.CreateUser("blah@blah.com", "pass", "blah@blah.com");
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();
Этот код генерирует ошибку:
Элемент с таким же ключом уже добавлен.