KnigaRead.com/
KnigaRead.com » Компьютеры и Интернет » Базы данных » Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Троелсен Эндрю, "Язык программирования C#9 и платформа .NET5" бесплатно, без регистрации.
Перейти на страницу:

dotnet add WpfControlsAndAPIs package Microsoft.EntityFrameworkCore

dotnet add WpfControlsAndAPIs package Microsoft.EntityFrameworkCore.SqlServer

dotnet add WpfControlsAndAPIs package Microsoft.Extensions.Configuration

dotnet add WpfControlsAndAPIs package Microsoft.Extensions.Configuration.Json

Затем щелкните правой кнопкой мыши на имени решения, выберите в контекстном меню пункт AddExisting Project (Добавить►Существующий проект) и добавьте проекты

AutoLot.Dal
и
AutoLot.Dal.Models
из главы 23, а также ссылки на эти проекты. Сделать это можно также с помощью интерфейса командной строки, выполнив показанные ниже команды (вам придется скорректировать пути к проектам согласно требованиям имеющейся операционной системы):

dotnet sln .Chapter25_AllProjects.sln add ..Chapter_23AutoLot.Models

dotnet sln .Chapter25_AllProjects.sln add ..Chapter_23AutoLot.Dal

dotnet add WpfControlsAndAPIs reference ..Chapter_23AutoLot.Models

dotnet add WpfControlsAndAPIs reference ..Chapter_23AutoLot.Dal

Убедитесь, что в проекте

AutoLot.Dal
все еще присутствует ссылка на проект
AutoLot.Dal.Models
. Добавьте в файл
MainWindow.xaml.cs
следующие пространства имен:

using System.Linq;

using AutoLot.Dal.EfStructures;

using AutoLot.Dal.Repos;

using Microsoft.EntityFrameworkCore;

using Microsoft.Extensions.Configuration;

Добавьте в

MainWindow.cs
два свойства уровня модуля для хранения экземпляров реализации
IConfiguration
и класса
ApplicationDbContext
:

private IConfiguration _configuration;

private ApplicationDbContext _context;

Добавьте новый метод по имени

GetConfigurationAndContext()
для хранения экземпляров реализации
IConfiguration
и класса
ApplicationDbContext
и вызовите его в конструкторе. Вот полный код метода:

private void GetConfigurationAndDbContext()

{

  _configuration = new ConfigurationBuilder()

    .SetBasePath(Directory.GetCurrentDirectory())

    .AddJsonFile("appsettings.json", true, true)

    .Build();

  var optionsBuilder =

    new DbContextOptionsBuilder<ApplicationDbContext>();

  var connectionString =

    _configuration.GetConnectionString("AutoLot");

  optionsBuilder.UseSqlServer(connectionString,

    sqlOptions => sqlOptions.EnableRetryOnFailure());

  _context = new ApplicationDbContext(optionsBuilder.Options);

}

Добавьте в проект новый файл JSON по имени

appsettings.json
. Щелкните правой кнопкой мыши на имени этого файла в окне Solution Explorer, выберите в контекстном меню пункт Properties (Свойства) и установите свойство Copy То Output Directory (Копировать в выходной каталог) в Copy always (Всегда копировать). Вы можете добиться того же самого результата с помощью файла проекта:

<ItemGroup>

  <None Update="appsettings.json">

    <CopyToOutputDirectory>Always</CopyToOutputDirectory>

  </None>

</ItemGroup>

Модифицируйте файл JSON, как показано ниже (приведя строку подключения в соответствие со своей средой):

{

  "ConnectionStrings": {

    "AutoLotFinal": "server=.,5433;Database=AutoLot;

    User Id=sa;Password=P@ssw0rd;"

  }

}

Откройте файл

MainWindow.xaml.cs
, добавьте последнюю вспомогательную функцию по имени
ConfigureGrid()
и вызовите ее в конструкторе после конфигурирования
ApplicationDbContext
. Понадобится добавить лишь несколько строк кода:

private void ConfigureGrid()

{

  using var repo = new CarRepo(_context);

  gridInventory.ItemsSource = repo

    .GetAllIgnoreQueryFilters()

    .ToList()

    .Select(x=> new {

      x.Id,

      Make=x.MakeName,

      x.Color,

      x.PetName

    });

}

Запустив проект, вы увидите данные, заполняющие сетку. При желании сделать сетку более привлекательной можно применить окно Properties в Visual Studio для редактирования свойств сетки, чтобы улучшить ее внешний вид.

На этом текущий пример завершен. В последующих главах вы увидите в действии другие элементы управления, но к настоящему моменту вы должны чувствовать себя увереннее с процессом построения пользовательских интерфейсов в Visual Studio, а также при работе с разметкой XAML и кодом С#.

Роль свойств зависимости

Подобно любому API-интерфейсу .NET Core внутри WPF используется каждый член системы типов .NET Core (классы, структуры, интерфейсы, делегаты, перечисления) и каждый член типа (свойства, методы, события, константные данные, поля только для чтения и т.д.). Однако в WPF также поддерживается уникальная программная концепция под названием свойство зависимости.

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*