2017-09-03 160 views
0

我正在嘗試使用存儲庫模式和工作單元的MVC項目。無法從存儲庫轉換爲IRepository UOW存儲庫模式

以下是從我的InitOfWork

public interface IUnitOfWork 
{ 
    IRepository<User> UserRepository { get; } 
    void Save(); 
} 

,這是從的UnitOfWork

public class UnitOfWork:IUnitOfWork, IDisposable 
{ 
    private JNContext context = new JNContext(); 
    private bool disposed = false; 


    private IRepository<User> userRepository; 
    public IRepository<User> UserRepository 
    { 
     get 
     { 
      if (this.userRepository == null) 
      { 
       this.userRepository = new Repository<User>(this.context); 
      } 

      return this.userRepository; 
     } 
    } 

    public void Save() 
    { 
     this.context.SaveChanges(); 
    }} 

中的UnitOfWork下面一行生成錯誤「無法隱從庫轉換爲IRepository

this.userRepository = new Repository<User>(this.context); 

我錯過了什麼。我無法找到答案,而且我一整天都陷入困境。

+0

你確定,該資源庫實現IRepository? – wheeler

+0

@wheeler:不,它不是。我有**公開課倉庫其中TEntity:class **。我需要實現** IRepository **嗎?是否可以依賴注入 –

+0

是的,你需要實現'IRepository'。在'Repository'中。編譯器無法解決這個問題。 – RedgoodBreaker

回答

0

嘗試這樣的事情

public interface IRepository<T> where T : class 
{ 
    IQueryable<T> Entities { get; } 
    void Remove(T entity); 
    void Add(T entity); 
} 
public class GenericRepository<T> : IRepository<T> where T : class 
{ 
    private readonly MyDbContext _dbContext; 
    private IDbSet<T> _dbSet => _dbContext.Set<T>(); 
    public IQueryable<T> Entities => _dbSet; 
    public GenericRepository(MyDbContext dbContext) 
    { 
     _dbContext = dbContext; 
    } 
    public void Remove(T entity) 
    { 
     _dbSet.Remove(entity); 
    } 
    public void Add(T entity) 
    { 
     _dbSet.Add(entity); 
    } 
} 

發現它這裏的好文章:https://medium.com/@utterbbq/c-unitofwork-and-repository-pattern-305cd8ecfa7a