我正在尝试将新记录插入tblUser
并同时更新tblEmployee
中的记录。 tblUser中的新记录保存正常,但第二个表的更新部分无法正常工作。
编译器虽然读了tbEmp.IsUser = true;
这一行。我错过了什么。
public void Save(tblUser objUser)
{
MYDB.AddTotblUsers(objUser);
tblEmployee tbEmp = this.GetEmployeeRecordById(objUser.EmpId);
if(tbEmp!=null)
{
string abc = tbEmp.EmployeeCode;
tbEmp.IsUser = true;
}
MYDB.SaveChanges();
}
public tblEmployee GetEmployeeRecordById(Guid gId)
{
return MYDB.tblEmployees.Where(e=>e.EmployeeId == gId).SingleOrDefault();
}
EmpId已经知道,并且在更新tblEmployee之前tblUser不必先保存。为了确保,我检查了'abc',我在那里得到了员工代码......
答案 0 :(得分:1)
试一试:
public void Save(tblUser objUser)
{
MYDB.AddTotblUsers(objUser);
MYDB.SaveChanges();
tblEmployee tbEmp = this.GetEmployeeRecordById(objUser.EmpId);
if(tbEmp!=null)
tbEmp.IsUser = true;
}
Obs:在数据库插入之前没有objUser.EmpID。您需要插入并在其后面获得必要的ID。
如果您需要确保两者都已保存或没有,请使用TransactionScope执行此操作。
public void Save(tblUser objUser)
{
using (TransactionScope ts= new TransactionScope())
{
MYDB.AddTotblUsers(objUser);
MYDB.SaveChanges();
tblEmployee tbEmp = this.GetEmployeeRecordById(objUser.EmpId);
if(tbEmp!=null)
{
tbEmp.IsUser = true;
MYDB.SaveChanges();
}
ts.complete();
}
}
问候。
墨菲