在我嘗試在我的代碼優先的MVC3項目中擴展MVC成員資格提供程序後出現一個奇怪的錯誤。MVC會員問題 - C#,EntityFramework
的錯誤是:
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,其中外鍵是在aspnet_Users用戶ID字段。
將條目插入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設置爲主鍵?我檢查了數據庫,它已經設置好了,所以不知道我可以在代碼中修改它。
謝謝 - 任何幫助讚賞
好吧,這似乎夠公平,所以我刪除了我的新表和成員表之間的關係,並刪除了代碼中的鏈接,但它仍在發生。這可能是我在這裏的mvc經驗不足,但是如果我只是通過輸入一行(包括使用來自成員表的用戶標識)來修改UserDetails表,那麼還有什麼更多的我只能保存到特定的模型,即UserDetails,而不是整個數據庫? – 2011-06-08 14:05:54
Doh!我沒有刪除一個參考 - 我現在已經刪除它,它工作正常。感謝您和Craig的信息 - 非常有幫助.. – 2011-06-08 14:18:34