如何在接口中实现Delete方法,并在控制器MVC4中调用它

本文关键字:控制器 MVC4 调用 Delete 接口 实现 方法 | 更新日期: 2023-09-27 18:24:51

嗨,我想在DataSource中实现我的void Delete方法。我已经创建了Save()方法,但在Delete()方面遇到了困难。我一直在找,但还是不知道怎么做。有什么帮助吗。

接口:

 public  interface IDepartmentDataSource
{
    IQueryable<User> Users { get; }
    IQueryable<Department> Departments { get;}
    IQueryable<Entry> Entries { get; }
    void Delete();
    void Save();
}

数据源:

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

如何在接口中实现Delete方法,并在控制器MVC4中调用它

我想你需要这样的东西:

public void IDepartmentDataSource.DeleteDepartment(int id)
{
   Department itemToDelete = this.GetDepartmentById(id);
   if (itemToDelete != null)
   {
     this.Departments.Remove(itemToDelete);                
   }
 }

(请参阅此处了解GetDepartmentById方法…)

我找到了一个解决方案。我遇到的问题是存储库模式。现在我的代码看起来像:

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