Как смешать Entity Framework с веб-API - PullRequest
8 голосов
/ 06 марта 2012

Я исследую новую платформу ASP.NET MVC4 Web API.Я запускаю бета-версию Visual Studio 2011 в предварительной версии для Windows 8.

Моя проблема в том, что ни один из официальных примеров для новой платформы Web API не использует какой-либо вид базы данных.В прошлом я мог создавать локальную базу данных SQL CE и обслуживать ее через службу данных WCF, используя Entity Framework в качестве ORM.Как мне сделать то же самое с Web API?

Кроме того, это даже правильный вопрос?Должен ли я просто продолжать использовать Службу данных WCF, если я хочу предоставить сопоставленную базу данных SQL CE Entity Framework?Кажется, он работает нормально, за исключением того, что он не предоставляет гибкости в выборе форматеров ответов, которые я мог бы получить с помощью веб-API.

Ответы [ 2 ]

4 голосов
/ 06 марта 2012

Если вы посмотрите на официальный образец диспетчера контактов , вы обнаружите, что шаблон хранилища используется для доступа к слою данных. Также имейте в виду, что в этом конкретном примере также есть 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 , по-прежнему действительны .

2 голосов
/ 06 марта 2012

Я не работал с веб-API WCF, поэтому могу с уверенностью сказать, можете ли вы использовать его так же, как и с веб-API WCF, но я уверен, что вы можете использовать EF с веб-API ASP.NET. Я предлагаю вам взглянуть на то, как ASP.NET MVC использует EF , должно быть очень похоже на то, как вы будете использовать его с ASP.NET Web API.

Что касается другого вопроса, если вы планируете какую-то новую разработку, вам следует подумать об использовании ASP.NET Web API, поскольку на wcf.codeplex.com есть объявление:

WCF Web API теперь является ASP.NET Web API! ASP.NET Web API выпущен с ASP.NET MVC 4 Beta. Веб-API WCF и поддержка WCF для контента jQuery на этом сайте будет удалена к концу 2012 года.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...