如何在接口中实现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; }
}
}
我想你需要这样的东西:
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);
}
}