コードを最初に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メンバーシップを設定しますが、外部キーがaspnet_UsersでユーザーIDフィールドであるUserDetailsと呼ばれる余分なテーブル&モデルを追加しました。
エントリが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の未経験かもしれませんが、メンバーシップテーブルからuserIDを使用して行を入力するだけで、UserDetailsテーブルの修正を行っているのであれば、その特定のモデル(UserDetailsなど)データベース全体ではなく? –
Doh!私は1つの参照を削除していない - 私は今それを削除し、それは正常に動作しています。あなた自身とCraigに感謝します。 –