无法使用Linq To Entities更新数据库

时间:2013-12-15 13:11:20

标签: c# entity-framework-4 linq-to-entities

我正在尝试将新记录插入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',我在那里得到了员工代码......

1 个答案:

答案 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();
  }
}

问候。

墨菲