С помощью диспетчера пакетов NuGet добавьте в проект следующие пакеты:
• Microsoft.EntityFrameworkCore
• Microsoft.EntityFrameworkCore.SqlServer
• Microsoft.Extensions.Configuration
• Microsoft.Extensions.Configuration.Json
Если вы предпочитаете добавлять пакеты в интерфейсе командной строки .NET Core, тогда введите приведенные далее команды (в каталоге решения):
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
Затем щелкните правой кнопкой мыши на имени решения, выберите в контекстном меню пункт Add►Existing Project (Добавить►Существующий проект) и добавьте проекты AutoLot.Dal
и AutoLot.Dal.Models
из главы 23, а также ссылки на эти проекты. Сделать это можно также с помощью интерфейса командной строки, выполнив показанные ниже команды (вам придется скорректировать пути к проектам согласно требованиям имеющейся операционной системы):
dotnet sln .\Chapter25_AllProjects.sln add ..\Chapter_23\AutoLot.Models
dotnet sln .\Chapter25_AllProjects.sln add ..\Chapter_23\AutoLot.Dal
dotnet add WpfControlsAndAPIs reference ..\Chapter_23\AutoLot.Models
dotnet add WpfControlsAndAPIs reference ..\Chapter_23\AutoLot.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
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 (Всегда копировать). Вы можете добиться того же самого результата с помощью файла проекта:
Модифицируйте файл JSON, как показано ниже (приведя строку подключения в соответствие со своей средой):
{
"ConnectionStrings": {
"AutoLotFinal": "server=.,5433;Database=AutoLot;
User Id=sa;Password=P@ssw0rd;"
}
}