【问题标题】:How to implement the Delete method in the interface and call it in the Controller MVC4如何在接口中实现Delete方法并在Controller MVC4中调用
【发布时间】:2014-09-29 08:06:42
【问题描述】:

您好,我想在我的 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; }
    }
}

【问题讨论】:

    标签: c# asp.net-mvc-4 entity-framework-5


    【解决方案1】:

    我认为你需要类似的东西:

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

    (请参阅here 了解 GetDepartmentById 方法...)

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-08-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多