Я видел некоторые реализации шаблона репозитория, очень простую и интуитивную, связанную форму других ответов здесь, в 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 из чего-либо в памяти? Моя идея состояла в том, чтобы создать коллекцию (List, Dictionary...) и заглушить ее при модульном тестировании.
Спасибо!
EDIT: Мне нужно что-то вроде этого:
- У меня есть классная книга
- У меня есть библиотека классов
-
В конструкторе
Library
я инициализирую репозиторий:var bookRepository = new Repository<Book>(dataContext)
-
И методы
Library
используют репозиторий, как этотpublic Book GetByID(int bookID) { return bookRepository.GetByID(bookID) }
При тестировании я хочу предоставить контекст памяти. Когда я буду в производстве, я дам реальный контекст базы данных.