したがって、タイプT = ActionResult
という非同期タスクメソッドを使用して、データベース(DBMS = SQL Server)に新しいユーザーを作成します。これは、エラーなしで前に完璧に動作するために使用されるが、突然、それが実行中のこの時点になったとき、それは破壊を開始:私はGitの上の作業バージョンが、それでも運にすべてを戻ってきたユーザーを挿入すると、IDが電子メールのプロパティを複製しようとしています
var result = await UserManager.CreateAsync(user, model.Password);
。
何が問題になる可能性があり、どうすればこの問題を回避できますか?
コントローラー:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Register(RegisterViewModel model)
{
if (ModelState.IsValid)
{
var user = new ApplicationUser()
{
UserName = model.UserName,
firstName = model.firstName,
lastName = model.lastName,
Email = model.email,
cellNo = model.cellNo,
DateCreated = DateTime.Now
};
var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
//await SignInAsync(user, isPersistent: false);
// util.Log(User.Identity.GetUserId(), 5, "Account - Added a user (" + model.UserName + ") to the system");
return RedirectToAction("SuccessfullyAddedNewUser", "Users", model);
}
else
{
AddErrors(result);
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
//Users controller action method to get redirected to once new user has been created successfully
// GET: /Users/SuccessfullyAddedNewUser
public ActionResult SuccessfullyAddedNewUser(RegisterViewModel model)
{
return View(model);
}
モデル:ApplicationUser
public class ApplicationUser : IdentityUser
{
[Required]
[StringLength(11, MinimumLength = 11)]
[Display(Name = "Cell Number")]
public string cellNo { get; set; }
[Required]
[MaxLength(50), MinLengthAttribute(3)]
[Display(Name = "First Name")]
public string firstName { get; set; }
[Display(Name = "Email Address")]
public string email { get; set; }
[Required]
[MaxLength(50), MinLengthAttribute(3)]
[Display(Name = "Last Name")]
public string lastName { get; set; }
[Display(Name = "Date Created")]
public DateTime DateCreated { get; set; }
[Required]
[DefaultValue(false)]
public Boolean MustResetPassword { get; set; }
//Concatenates the first and last name
public String getFullName()
{
return firstName + " " + lastName;
}
}
例外:
例外:エントリを更新中にエラーが発生しました=」メッセージを参照してください。詳細の内部例外"
内部例外:INSERTのSET句または列リストに列名 'email'が複数指定されています。同じ節に複数の値が割り当てられている列は にできません。句を に変更して、列が1回だけ更新されるようにします。このステートメント がビューに列を更新または挿入する場合、列のエイリアシングによってコード内に重複が埋め込まれてしまう可能性があります( )。
私のコードをチェックすると、電子メールは1回だけ指定されます。
質問にはエラーがあります。 – User3250
あなたはアイデンティティパッケージ/ –
**を更新しました** 'それは中断します' **。これはあまりにも悪いことですが、問題を再現するために使用できる[mcve]ではありません。現在表示されている内容に基づいて何が問題になるのかわからない。 – Nkosi