Save new or update existing record using linq

so I used to save the entry with linq: (my Q is below)

    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;
        }
    }

my questions:

a. are if nesccery statements? why not make an assignment without checking? mybe if the block takes more processor ...

b. Why write a new recording unit and update unit?

when the record is new, she will do

db.Employees.InsertOnSubmit(oldEmployee);

and then follow the update procedure ...

+3
source share
1 answer

As you do this, the only reason you need an if statement is to update it and insert it, so I would use an if statement just for that.

I would do this instead:

 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();
            db.Employees.InsertOnSubmit(oldEmployee);
        }

        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;
    }
}

, , . , , , , ModifiedDate EmployeeID.

+6

Source: https://habr.com/ru/post/1716824/


All Articles