標準のMVC登録フォーム(つまり電子メールフィールド)から値を挿入しようとしています。これはプライマリキーと別のテーブルのFKです。学生テーブルにメールのみが含まれていますので、登録時に提出したのと同じ値(メールフィールド)をaspnetusersテーブルに挿入します。私はこれまでのところ、このコードを書かれている:aspnetuserに挿入して別のテーブルに値を挿入
var student = new Student { email = model.Email };
が値を代入して、
db.Students.Add(student);
db.SaveChanges();
がアクションを実行するために、私はこれは登録コントローラで行われていると仮定します。私が間違ったセクションに置いたことを知らせてください。 student.emailがFKであれば、電子メールでなければなりません
AccountController.cs
をpublic async Task<ActionResult> Register(RegisterViewModel model)
{
if (ModelState.IsValid)
{
var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
var student = new Student { email = model.Email };
var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
string callbackUrl = await SendEmailConfirmationTokenAsync(user.Id, "Confirm your account");
ViewBag.Message = "Check your email and confirm your account, you must be confirmed "
+ "before you can log in.";
db.Students.Add(student);
db.SaveChanges();
return View("Info");
//return RedirectToAction("Index", "Home");
}
AddErrors(result);
}
// If we got this far, something failed, redisplay form
return View(model);
}
Student.cs
public class Student
{
[Key, ForeignKey("User")]
public string email { get; set; }
public virtual ApplicationUser User { get; set; }
}
私は 'あなたが表示されませんstudent.User = 'どこでも。 –
[プライマリと外部キーの制約](https://msdn.microsoft.com/en-GB/library/ms179610.aspx)も参照してください。 – Liam