Вы можете использовать репозитории, используя любую технологию доступа к данным.
Репозиторий является абстракцией существующих помощников / служб доступа к данным, позволяя отделить бизнес-логику от уровня доступа к данным. Хранилища используются вместе с Query для включения фильтрации. Он часто используется вместе с единицей работы для сохранения изменений в базе данных.
Хранилище имеет как минимум:
- Операции получения объекта по ключу
- Операция получения всех объектов
- Операции получения первого объекта по запросу
- Операции получения объектов по запросу
Очень простой пример:):
A. Продукт класс, определенный в Common :
public class Product
{
public int Id { get; private set; }
public string Code { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
B. Классы для Query , IRepository и IUnitOfWork определены в DAL.interfaces.dll или Common.dll ( но НЕ в DAL !).
public class Query
{
public string Text { get; set; }
}
public interface IRepository<TEntity>
where TEntity : class
{
bool TryGet(int key, out TEntity value);
TEntity this[int key] { get; }
IEnumerable<TEntity> GetAll();
bool TryGetFirst(Query condition, out TEntity value);
TEntity GetFirst(Query condition);
IEnumerable<TEntity> GetAll(Query condition);
int Count { get; }
}
public interface IUnitOfWork
{
void SetAdded(TEntity value); // Marks entity as added for further INSERT
void SetRemoved(TEntity value); // Marks entity as removed for further DELETE
void SetChanged(TEntity value); // Marks entity as modified for further UPDATE
void Save(); // Save all the changes
}
IUnitOfWork знает об измененных объектах. Save () вызывает соответствующий CRUD-метод DatabaseHelper / OdbcHelper для каждого измененного объекта, чтобы сохранить изменения в базе данных.
Реализация IRepository , ... IRepository и IUnitOFWork должна быть помещена в DAL. Затем BLL использует IRepository и IUnitOFWork для реализации бизнес-логики (домена). Сам BLL может быть организован как уровень обслуживания поверх модели домена , но это выходит за рамки обсуждения:).
Надеюсь, мой ответ поможет.
Пожалуйста, не стесняйтесь задавать мне вопрос ...
Ссылки:
Шаблоны архитектуры приложения для бизнеса от Мартина Фаулера