Reputation: 358
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; }
}
}
Upvotes: 0
Views: 1499
Reputation: 358
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);
}
}
Upvotes: 1