Я попытаюсь объяснить эту проблему как можно яснее.Web API & Entity Framework, где указать соединение с базой данных?
Я начинаю с двумя проектами:
Project One: модель данных
Репозиторием класс, который оборачивает DbContext, который имеет один DbSet: RentalListings
Это DbContext ИСПОЛЬЗУЕТ по умолчанию, так что, когда я сохраняю изменения, он сохраняет локальную БД.
Project Two: Console App
Содержит консольное приложение, что, когда запускается, инициализирует экземпляр класса репозитория.
Затем он создает несколько «RentalListings» и сохраняет их в репозитории.
Пока все хорошо. После запуска консольного приложения я проверяю локальный проводник объектов SQL SQL, и мой класс хранилища успешно сэкономлен в этом db.
Теперь я хочу получить доступ к этим вставленным данным через веб-API. Поэтому я добавил:
Project Три: Web API
создать новый класс контроллера и добавить один метод GET действий для извлечения всех списков.
При запуске проекта API, я могу ударить метод действий, который выглядит следующим образом:
[HttpGet]
public IEnumerable<RentalListing> GetAllListings() {
StatsRepository repository = new StatsRepository(new StatsContext());
return repository.GetRentalListings();
}
через правильный URL. Однако я получаю возвращается следующая ошибка:
Unable to complete operation. The supplied SqlConnection does not specify an initial catalog or AttachDBFileName.
Теперь от поиска в Интернете, я думаю, проблема в том, что он не знает, как получить доступ к базе данных ??? И что я должен указать строку соединения в файле Web.config в моем проекте веб-API.
Вопросы:
1) Как сделал мой консольное приложение, что не определяет строку подключения, создать базу данных с помощью моего МДФ хранилища класса?
2) Почему не работает то же самое для моего веб-проекта api? не может ли он просто использовать репозиторий для извлечения базы данных, как это делало консольное приложение?
С нетерпением ждем ответов, спасибо заранее!
Благодаря кучу для информации. Это помогло мне понять, почему в моем консольном приложении не требуется строка подключения (соглашение означает, что он создал файл MDF с использованием локальной базы данных). Все еще немного облачно, почему проект веб-API, который использует тот же контекст БД, не может сделать то же самое. Но я сейчас просто соглашусь! – AndyNZ
Вы горячо приветствуете :) О вашем вопросе, EF был разработан таким образом, когда вы используете его через HTTP/S (web/web Api). Именно по этой причине он не работает, как консольное приложение в этой ситуации. – Sampath