无法更新寄存器上表中的列



我正在尝试自学asp.net.mvc,并使用mvc的默认模板启动了一个项目。我稍微更改了一下模板,所以当使用默认操作方法注册时,我会将新注册的用户id添加到另一个名为companies的表中。

基本上,我在前端添加了一个新的文本字段。当用户注册时,他会在那里键入一个数字。在后台,我从companies表中查找一家公司,该公司的ID与前台的号码相匹配。如果匹配,我想将当前用户ID保存到公司表中名为CAId 的列中

以下是整个操作方法(我在await之后进行了修改):

public async Task<ActionResult> RegisterCA(RegisterCAEViewModel model)
{
if (ModelState.IsValid)
{
var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
var currentUser = UserManager.FindByName(user.UserName);
var roleresult = UserManager.AddToRole(currentUser.Id, "CompanyAdministrator");

await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);
var company = db.Companies.Find(model.CompanyCode);
// find the company by the id passed in the frontend.
if (company!=null)
{
company.CAId = currentUser.Id;
//set the id
db.Entry(company).State = EntityState.Modified;
db.SaveChanges();
}
return RedirectToAction("Index", "Home");
}
AddErrors(result);
}
return View(model);
}

以下是我在上面的方法中尝试的内容:

var company = db.Companies.Find(model.CompanyCode);
// find the company by the id passed in the frontend.
if (company!=null)
{
company.CAId = currentUser.Id;
//set the id
db.Entry(company).State = EntityState.Modified;
db.SaveChanges();

当我注册用户时,我不会收到任何错误。用户已注册,但CAId字段不会用新注册的用户ID更新。

请有人帮忙解释一下!我将非常感激,因为我已经被这个问题困扰了几个小时:(.

尝试移动此行:公司CAId=当前用户Id;线路之后数据库。SaveChanges();currentauser id是一个标识列,只有在将其保存到数据库后才会对其进行设置。

对于将来要寻找类似问题答案的人来说-我的问题中的代码运行得非常好。问题是,在视图中,我使用的是默认的Register操作方法,而不是上面修改的方法!感谢所有试图提供帮助的人!

我猜,您需要将实体附加到集合的底层上下文
dbSet.Attach(公司)

然后上下文Entry(company).State=EntityState.Modified;数据库。SaveChanges();

相关内容

  • 没有找到相关文章

最新更新