我一直在学习MVC并且完成了这一部分:
// POST: /Account/Register
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Register(RegisterViewModel model)
{
if (ModelState.IsValid)
{
var user = new ApplicationUser { UserName = model.UserName, Email = model.Email };
UserManager.Delete(user);
//myDBLoginDetails ent = new myDBLoginDetails();
//ent.uspInsertUser(user.UserName, model.Password, model.FirstName, model.LastName, user.Email);
var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);
// For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771
// Send an email with this link
// string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
// var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
// await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>");
return RedirectToAction("Index", "Home");
}
AddErrors(result);
}
// If we got this far, something failed, redisplay form
return View(model);
}
我认为一切顺利,我成功注册\已保存的用户到SQL Server数据库(没有MDF文件)。为了继续测试,我将这些代码重新注册为注册\插入用户并删除了表并重新创建它,这样我最终可以从头开始。 但是当我尝试重新注册用户以便我可以逐步完成代码以了解所有内容时,我发现我的用户仍然在我的PC上,因为我收到了消息:
名称tempUser已被占用。
电子邮件'tempUser@email.com'已被拍摄。
我尝试删除用户(使用UserManager.Delete(user);)但收到了消息:
[InvalidOperationException:无法删除该对象,因为它 在ObjectStateManager中找不到。]
我搜索了一个解释和解决方案,但失败了,只发现可能有其他\更好的方法来注册\ edit \ delete用户和最终设置的挫败感。
所以,我想我需要解决几个问题。我有一个LoginDetalsEDmodel.edmx所以我仍然使用存储过程或使用框架是正确的吗?如果框架那么我该怎么做?
而且....我如何摆脱仍然在我的计算机上的用户(从数据库中消失)?
我希望我能够很好地解释这一点,因为我还在学习......