Если вы посмотрите на официальный образец диспетчера контактов , вы обнаружите, что шаблон хранилища используется для доступа к слою данных.
Также имейте в виду, что в этом конкретном примере также есть DI через Ninject.
В моем случае я легко подключил это к уже существующей модели EF.
Вот пример реализации репозитория
///MODEL
public class SampleRepository : ISampleRepository
{
public IQueryable<Users> GetAll()
{
SampleContext db = new SampleContext();
return db.users;
}
[...]
}
///CONTROLLER
private readonly ISampleRepository repository;
public SampleController(ISampleRepository repository)
{
this.repository = repository;
}
//GET /data
public class SampleController : ApiController
{
public IEnumerable<DataDTO> Get()
{
var result = repository.GetAll();
if (result.Count > 0)
{
return result;
}
var response = new HttpResponseMessage(HttpStatusCode.NotFound);
response.Content = new StringContent("Unable to find any result to match your query");
throw new HttpResponseException(response);
}
}
Хотя ваш пробег может отличаться, вы можете абстрагироваться от доступа к некоторым данным еще дальше.
Хорошей новостью является то, что множество шаблонов и идей, которые вы, возможно, уже использовали в проектах на основе MVC , по-прежнему действительны .