Proper way to delete record in LINQ to Entities

c# entity-framework linq linq-to-entities

Question

I just have a very simple situation where all I need is to delete record using Linq2Entities. I tried to do some research and still can't figure out the right way to do it.

Here's my simple code:

[DataObjectMethod(DataObjectMethodType.Delete)]
public void DeleteEmployee(Employee z)
{
    using (var ctx = new MyEntity())
    {
        var x = (from y in ctx.Employees
                 where  y.EmployeeId == z.EmployeeId
                 select y).FirstOrDefault();
         ctx.DeleteObject(x);
         ctx.SaveChanges();
    }
 }

[DataObjectMethod(DataObjectMethodType.Select)]
public List<Employee> GetAllEmployee()
{
    using (var ctx = new MyEntity())
    {
        var x = from y in ctx.Employees
                select y;
        return x.ToList();
    }
}

I can delete a particular record if for example I assign y.EmployeeName == "Harold Javier" to the Delete method above, but when I assign y.EmployeeId == z.EmployeeId to the above code, the delete doesn't work. (Note: EmployeeId is the primary key of the Employee table)

1
16
3/18/2013 6:03:43 AM

Accepted Answer

I decided to answer my own question.

My delete function worked when I did the following:

using (var ctx = new MyEntity())
    {
        var x = (from y in ctx.Employees
             orderby  y.EmployeeId descending
             select y).FirstOrDefault();
        ctx.Employees.DeleteObject(x);
        ctx.SaveChanges();
    }

I know there could be a better approach than this, but it works for me for the mean time.

4
3/19/2013 2:50:58 AM

Popular Answer

I think this is better option of delete

using (var ctx = new MyEntity())
    {
        var x = (from y in ctx.Employees
             orderby  y.EmployeeId descending
             select y).FirstOrDefault();
        ctx.Employees.Remove(x);
        ctx.SaveChanges();
    }

at my side DeleteObject is not working so i use Remove



Related Questions





Related

Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow