Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在接口中实现Delete方法并在控制器MVC4中调用_C#_Asp.net Mvc 4_Entity Framework 5 - Fatal编程技术网

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

C# 如何在接口中实现Delete方法并在控制器MVC4中调用,c#,asp.net-mvc-4,entity-framework-5,C#,Asp.net Mvc 4,Entity Framework 5,嗨,我想在我的数据源中实现我的void Delete方法。我创建了Save()方法,但仍在努力使用Delete()。我一直在找,但还是不知道怎么做。任何帮助 界面: public interface IDepartmentDataSource { IQueryable<User> Users { get; } IQueryable<Department> Departments { get;} IQueryable<Entry> E

嗨,我想在我的数据源中实现我的void Delete方法。我创建了Save()方法,但仍在努力使用Delete()。我一直在找,但还是不知道怎么做。任何帮助

界面:

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

    void Delete();
    void Save();

}
公共接口IDepartmentDataSource
{
IQueryable用户{get;}
IQueryable部门{get;}
IQueryable条目{get;}
作废删除();
作废保存();
}
数据源:

  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; }
    }
}
公共类DepartmentDb:DbContext,IDepartmentDataSource
{
公共部门数据库():基本(“默认连接”)
{
}
公共数据库集用户{get;set;}
公共数据库集部门{get;set;}
公共数据库集项{get;set;}
void IDepartmentDataSource.Save()
{
保存更改();
}
void IDepartmentDataSource.Delete()
{
//这里的逻辑是什么?
}
IQueryable IDepartmentDataSource.Entries
{
获取{返回条目;}
}
IQueryable iDPartmentDataSource.Departments
{
获取{返回部门;}
}
IQueryable iDPartmentDataSource.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);
}   

}
公共类部门db:DbContext
{
公共部门数据库():基本(“默认连接”)
{
}
公共数据库集用户{get;set;}
公共数据库集部门{get;set;}
公共数据库集项{get;set;}
}
//您的存储库
公共类DepartmentRepository:IDisposable
{
受保护的bool isDisposed=假;
私有部门数据库上下文{get;set;}
//阅读(公开)
公共IQueryable用户{get{return Context.Users;}}
公共IQueryable部门{get{return Context.Departments;}}
公共IQueryable条目{get{return Context.Entries;}}
公共部门资源库()
{
上下文=新部门数据库();
}
公共整数插入(用户项)
{ 
Context.Users.Add(项);
返回Context.SaveChanges();
}
公共整数更新(用户项)
{ 
Context.Entry(item).State=EntityState.Modified;
返回Context.SaveChanges();
}
公共整数删除(用户项)
{ 
Context.Users.Remove(项);
返回Context.SaveChanges();
}
受保护的虚拟void Dispose(bool disposing)
{
如果(isDisposed)
返回;
如果(处置)
{
如果(this.Context!=null)
{
this.Context.Dispose();
this.Context=null;
}
}
isDisposed=true;
}
公共空间处置()
{
处置(真实);
总干事(本);
}   
}