在表B中创建行时如何更新表A中的值?

时间:2019-05-29 19:25:55

标签: c# asp.net-mvc entity-framework savechanges

我的平台有两个表UserInfoPersonalInfo。用户创建配置文件时,数据将保存在UserInfo中。 UserInfo的视图有一个@Html.EditorFor,它是从Active Directory自动填充的(如果AD字段为null,则辅助类会在其位置添加N / A)。根据用户决定在平台内使用哪种应用程序,将需要更多信息,因此他们将需要在PersonalInfo中创建一行。用户可以从其中选择的PersonalInfo作为@Html.DropDownListFor的视图将更新用户部门和成本中心。

创建或更新UserInfo的行时,我想更新PersonalInfo的部门。

当前,当我创建一行时,它看起来像这样:

if (ModelState.IsValid)
{
var myUserInfo = new myUserInfo
{
    UserId = userNum.Id,
    Address = viewModel.Address,
    City = viewModel.City,
    State = viewModel.State,
    CellPhone = viewModel.CellPhone,
    Department = viewmodel.Department,
    CostCenter = viewmodel.CostCenter,
    ZipCode = viewModel.ZipCode
};
db.MyUserInfos.Add(myUserInfo);
db.SaveChanges();
} 

如何在调用Department之前仅更新PersonalInfo表中的db.SaveChanges()字段?

1 个答案:

答案 0 :(得分:1)

在tableB中添加一行:-

var tableB = new TableB
{
    UserId = userNum.Id,
    Address = viewModel.Address,
    City = viewModel.City,
    State = viewModel.State,
    CellPhone = viewModel.CellPhone,
    Department = viewmodel.Department,
    CostCenter = viewmodel.CostCenter,
    ZipCode = viewModel.ZipCode
};
db.MyTableB.Add(tableB);

更新表A中的行:-

var tableA = db.MyTableA.Find(tableAId);

tableA.Department = viewModel.Department;

db.MyTableA.Attach(tableA);
db.Entry(tableA).State = EntityState.Modified

完成所有必需的更改后,致电db.SaveChanges();