Получение странной ошибки после того, как я попытался расширить поставщик членства MVC в моем проекте MVC3 с первым кодом.
Ошибки:
EntityType 'MembershipUser' has no key defined. Define the key for this EntityType.
EntitySet "MembershipUsers" is based on type "MembershipUser" that has no keys defined
Я установил стандартное членство в asp.net, но добавил дополнительную таблицу и модель под названием UserDetails, где внешний ключ - это поле UserId в aspnet_Users.
Как только запись была вставлена в таблицу пользователей, я получаю UserId и пытаюсь ввести другие данные в таблицу Useretails, но именно тогда появляются эти ошибки. Вот другой соответствующий код. AccountController:
if (createStatus == MembershipCreateStatus.Success)
{
//Add other user details
UserRepository _user = new UserRepository();
UserDetails userDetails = new UserDetails();
userDetails.EmployeeNumber = Request.Form["EmployeeNumber"];
userDetails.Title = Request.Form["Title"];
userDetails.FirstName = Request.Form["FirstName"];
userDetails.Initials = Request.Form["Initials"];
userDetails.Surname = Request.Form["Surname"];
userDetails.Nino = Request.Form["Nino"];
_user.AddUserDetails(userDetails, model.Email);
return RedirectToAction("Welcome", "Home");
}
UserRepository:
public MembershipUser GetUserByEmail(string email)
{
MembershipUser user = Membership.GetUser(email);
return user;
}
public void AddUserDetails(UserDetails userDetails, string email)
{
MembershipUser user = GetUserByEmail(email);
Guid userGuid = (Guid)Membership.GetUser(email).ProviderUserKey;
userDetails.UserID = userGuid; //Add UserID foreign key
using (IntranetApplication db = new IntranetApplication())
{
db.UserDetails.Add(userDetails);
db.SaveChanges();
}
}
Ошибка возникает в строке db.SaveChanges.
Поскольку пользователь MemberShip сам является классом, а не частью структуры сущностей, кто-нибудь знает, как я могу установить UserID в качестве первичного ключа? Я проверил в базе данных, и она уже установлена, поэтому не знаю, как я могу изменить его в коде.
Спасибо - любая помощь оценена