このクエリの何が問題なのですか。なぜ User オブジェクトが返されないのですか? ユーザーが正常に作成されたことを確認できます。DB でレコードを確認できますが、そのオブジェクトをクエリできないため、新しく作成された UserId を別のテーブルで FK として使用できます。
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Register(RegisterModel model)
{
if (ModelState.IsValid)
{
// Attempt to register the user
try
{
WebSecurity.CreateUserAndAccount(model.UserName, model.Password, new {AccountType = model.AccountType });
WebSecurity.Login(model.UserName, model.Password);
var userProfile = db.UserProfiles.Local.SingleOrDefault(u => u.UserName == User.Identity.Name)
?? db.UserProfiles.SingleOrDefault(u => u.UserName == User.Identity.Name);
if (userProfile == null)
{
throw new Exception("no userProfile for this user");
}
if (userProfile.AccountType == AccountType.Retailer)
{
return RedirectToAction("Create", "Retailer");
}
return RedirectToAction("Index", "Home");
}
catch (MembershipCreateUserException e)
{
ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
AccountType の Enum は次のとおりです。
public enum AccountType
{
Retailer = 1,
Customer = 2,
Manager = 3,
Employee = 4
}
ありがとう、ログインしたユーザーの UserProfile オブジェクトまたは ID を取得する方法を探しています