Теперь пришло время научиться извлекать данные из базы данных с помощью нашего API.
Давайте создадим папку под названием Models.
он будет содержать класс, представляющий данные, которые мы хотим получить
public class Value { public int Id {get;set;} public double Amount {get;set;} }
Затем мы создаем папку с именем «Данные», эта папка будет содержать наш класс контекста.
назовем его DataContext
public class DataContext : DbContext { public DataContext(DbContextOptions options):base(options){} public DbSet<Value> Values{get;set;} }
наш класс наследуется от DbContext и реализует его конструктор
мы также создали свойство с именем Values, которое представляет нашу модель.
теперь в нашем appsettings.json мы собираемся создать нашу строку подключения
«ConnectionStrings»:{
«SqliteConnection»: «Data Source=MeetYouApp.db»
и добавьте его в наш сервис, используя его в нашем классе Startup.
в методе ConfigureServices добавьте следующее:
services.AddDbContext‹DataContext›(x =› x.UseSqlite(Configuration.GetConnectionString(“SqliteConnection”)));
Вы увидите, что у нас есть красная волнистая линия под «UseSqlite», нам нужно установить sqlite через пакет nuget «Microsoft.EntityFrameworkCore.Sqlite»
откройте палитру команд с помощью crtl + shift + p и введите Microsoft.EntityFrameworkCore.Sqlite и установить его
Вы можете столкнуться с ошибкой ссылки на пакет, поэтому я рекомендую вам заменить установленную версию на эту ниже
в вашем файле .csproj.
<PackageReference Include="Microsoft.EntityFramework.Sqlite" Version="2.1.8"/>
Теперь пришло время использовать entityframeworkcore для запуска наших миграций. Нам нужна эта команда для запуска нашей первой миграции
зайдите в свой терминал на vscode (Ctrl + Shift + ‘) введите:
cd MeetYouApp.API
Эта команда изменяет ваш каталог на каталог MeetYouApp.API.
затем введите эту команду:
Миграция dotnet ef добавляет InitialMigration
Теперь у вас будет папка Migrations в папке MeetYouApp.API, внутри нее вы найдете файл с именем, начинающимся с timestamp_InitialMigration. Код внутри этого файла — это инструкции по созданию вашей базы данных.
теперь, чтобы фактически создать базу данных, вам нужно ввести еще одну команду
обновление базы данных dotnet ef
эта команда запускает код в вашей timestamp_InitialMigration.cs
после того, как ваш проект будет успешно скомпилирован, у вас будет файл с именем MeetYouApp.db в папке MeetYouApp.API.
Пришло время добавить несколько записей в вашу новую базу данных. Для этого откройте DBBrowser для Sqlite
нажмите «Открыть базу данных» и найдите недавно созданный файл MeetYouApp.db, щелкните таблицу «Значения» и нажмите «Просмотреть данные»
Добавьте несколько новых записей и добавьте к ним значения.
Теперь мы хотим, чтобы наш API запрашивал и извлекал данные для нас.
Перейдите в свой ValuesController и создайте конструктор ValuesController со ссылкой на наш DataContext.
private readonly DataContext _context; public ValuesController(DataContext context) { _context = context; }
здесь с частной переменной типа DataContext только для чтения, чтобы получить ссылку на наш контекст для запроса нашей базы данных
теперь мы можем заменить метод get по умолчанию на приведенный ниже
[HttpGet] public async Task GetValues() { // this line use the context to query the database and convert the //values into a list. var values = await _context.Values.ToListAsync(); // this line returns a http reponse to its requestor with our values. return Ok(values); }
Этот метод помечен как асинхронный, потому что мы хотим, чтобы он мог одновременно получать ответ
нескольким пользователям. Вместо того, чтобы блокировать метод при каждом запросе и ждать ответа, мы даем возможность нескольким
пользователям получать результаты гораздо быстрее.
Сохраните свой код и запустите приложение с помощью команды dotnet run.
когда ваш API запущен и работает, пришло время увидеть результаты, перейдите в браузер и вставьте URL-адрес
https://localhost:5000/api/values
вы увидите свой прекрасный результат json.
В следующей публикации мы создадим наше приложение Angular, скоро увидимся”
Первоначально опубликовано на https://victorcodesbr.wordpress.com 29 марта 2019 г.