와 기록을 존재합니다이 내가 LINQ와 레코드를 저장하는 데 사용되는 방법입니다 LINQ
을 :
public void SaveEmployee(Employee employee)
{
using (BizNetDB db = new BizNetDB())
{
BizNet.SqlRep.Data.Employee oldEmployee = (from e in db.Employees
where e.EmployeeID == employee.EmployeeID
select e).SingleOrDefault();
if (oldEmployee == null)
{
oldEmployee = new BizNet.SqlRep.Data.Employee();
oldEmployee.BirthDate = employee.BirthDate;
oldEmployee.WorkRole = employee.WorkRole;
oldEmployee.CurrentFlag = employee.CurrentFlag;
oldEmployee.HireDate = employee.HireDate;
...
db.Employees.InsertOnSubmit(oldEmployee);
}
else
{
if (oldEmployee.BirthDate.Date != employee.BirthDate.Date)
oldEmployee.BirthDate = employee.BirthDate;
if (oldEmployee.CurrentFlag != employee.CurrentFlag)
oldEmployee.CurrentFlag = employee.CurrentFlag;
if (oldEmployee.HireDate.Date != employee.HireDate.Date)
oldEmployee.HireDate = employee.HireDate;
}
oldEmployee.ModifiedDate = DateTime.Now;
db.SubmitChanges();
employee.EmployeeID = oldEmployee.EmployeeID;
}
}
내 질문은 (내 Q는 다음과 같습니다). if 문은 네스케이리입니까? 왜 체크하지 않고 할당을하지 않으시겠습니까? mybe if 블록이 더 많은 CPU를 사용합니다 ..
b. 왜 새 레코드 블록과 업데이트 블록을 창안해야합니까? 당신이 그것을 문에 경우 당신이 필요로하는 유일한 이유는 일을하는지 ...
a. 값을 할당하기 전에 if 문은 값이 실제로 변경되지 않으면 컨텍스트가 업데이트 된 것으로 표시하지 않도록 유지해야합니다. b는 조셉에 의해 아래에서 잘 다루어진다. –