我已经看到了存储库模式的一些实现,非常简单直观,在stackoverflow中链接了其他答案
http://www.codeproject.com/Tips/309753/Repository-Pattern-with-Entity-Framework-4-1-and-C http://www.remondo.net/repository-pattern-example-csharp/
public interface IRepository<T>
{
void Insert(T entity);
void Delete(T entity);
IQueryable<T> SearchFor(Expression<Func<T, bool>> predicate);
IQueryable<T> GetAll();
T GetById(int id);
}
public class Repository<T> : IRepository<T> where T : class, IEntity
{
protected Table<T> DataTable;
public Repository(DataContext dataContext)
{
DataTable = dataContext.GetTable<T>();
}
...
进行单元测试时,如何将其设置为从内存中工作?有没有办法从内存中的任何内容构建 DataContext 或 Linq 表?我的想法是创建一个集合(列表,字典......)并在单元测试时存根它。
谢谢!
编辑:我需要这样的东西:
- 我有课本
- 我有一个类库
在
Library
构造函数中,我初始化存储库:var bookRepository = new Repository<Book>(dataContext)
并且
Library
方法使用存储库,就像这样public Book GetByID(int bookID) { return bookRepository.GetByID(bookID) }
测试时,我想提供一个内存上下文。在生产中,我将提供一个真实的数据库上下文。