2014-09-29 2 views
0

안녕하세요, 내 DataSource에서 내 void Delete 메서드를 구현하고 싶습니다. Save() 메서드를 만들었지 만 Delete()를 사용하여 고생하고 있습니다. 나는 조사를 해왔지만 여전히 어떻게해야할지 모른다. 도움이 필요해. 인터페이스에서 Delete 메서드를 구현하고 컨트롤러 MVC4에서 호출하는 방법

인터페이스 :

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

답변

1

해결책을 찾았습니다. 내가 가진 약속은 저장소 패턴 때문이었습니다. 이제 내 코드는 다음과 같습니다.

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

} 
1

난 당신이 뭔가를해야한다고 생각 :

public void IDepartmentDataSource.DeleteDepartment(int id) 
{ 

    Department itemToDelete = this.GetDepartmentById(id); 
    if (itemToDelete != null) 
    { 
    this.Departments.Remove(itemToDelete);     
    } 

} 

합니다 (GetDepartmentById 방법에 대한 here를 참조 ...)

관련 문제