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