0

Hi i want to implement my void Delete method in my DataSource. I've created the Save() method, but struggling with Delete(). I've been searching but still don't know how to do it. Any help.

The interface:

 public  interface IDepartmentDataSource
{
    IQueryable<User> Users { get; }
    IQueryable<Department> Departments { get;}
    IQueryable<Entry> Entries { get; }

    void Delete();
    void Save();

}

DataSource:

  public class DepartmentDb : DbContext, IDepartmentDataSource
{
    public DepartmentDb() : base("DefaultConnection")
    {

    }

    public DbSet<User> Users { get; set; }
    public DbSet<Department> Departments { get; set; }
    public DbSet<Entry> Entries { get; set; }


    void IDepartmentDataSource.Save()
    {
        SaveChanges();  
    }

    void IDepartmentDataSource.Delete()
    {

        // What is the logic here?

    }

    IQueryable<Entry> IDepartmentDataSource.Entries
    {
        get { return Entries; }
    }

    IQueryable<Department> IDepartmentDataSource.Departments
    {
        get { return Departments; }
    }

    IQueryable<User> IDepartmentDataSource.Users
    {
        get { return Users; }
    }
}
McKeymayker
  • 358
  • 3
  • 12

2 Answers2

1

I think you need something like:

public void IDepartmentDataSource.DeleteDepartment(int id)
{

   Department itemToDelete = this.GetDepartmentById(id);
   if (itemToDelete != null)
   {
     this.Departments.Remove(itemToDelete);                
   }

 }

(see here for the GetDepartmentById method...)

Community
  • 1
  • 1
DaniCE
  • 2,412
  • 1
  • 19
  • 27
1

I've found a solution. The promblem i had was with repository pattern. Now my code looks like:

public class DepartmentDb : DbContext
{
public DepartmentDb() : base("DefaultConnection")
{

}

public DbSet<User> Users { get; set; }
public DbSet<Department> Departments { get; set; }
public DbSet<Entry> Entries { get; set; }

}

// your repository
public class DepartmentRepository: IDisposable
{
protected bool isDisposed = false;
private DepartmentDb Context { get; set; } 

// read (public)
public IQueryable<user> Users { get { return Context.Users; } }
public IQueryable<department> Departments { get { return Context.Departments; } }
public IQueryable<entry> Entries { get { return Context.Entries; } }

public DepartmentRepository() 
{
     Context = new DepartmentDb();
}

public int Insert(User item)
{ 
    Context.Users.Add(item);
    return Context.SaveChanges();
}

public int Update(User item)
{ 
    Context.Entry<user>(item).State = EntityState.Modified;
    return Context.SaveChanges();
}


public int Delete(User item)
{ 
    Context.Users.Remove(item);
    return Context.SaveChanges();
}

protected virtual void Dispose(bool disposing)
{
if (isDisposed)
    return;

if (disposing)
{
    if (this.Context != null)
    {
        this.Context.Dispose();
        this.Context = null;
    }
}

isDisposed = true;
}

public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}   

}
McKeymayker
  • 358
  • 3
  • 12