Язык программирования C#9 и платформа .NET5
Часть 589 из 642 Информация о книге
options => options.UseSqlServer(connectionString,sqlOptions => sqlOptions.EnableRetryOnFailure()));services.AddScoped<ICarRepo, CarRepo>();services.AddScoped<ICreditRiskRepo, CreditRiskRepo>();services.AddScoped<ICustomerRepo, CustomerRepo>();services.AddScoped<IMakeRepo, MakeRepo>();services.AddScoped<IOrderRepo, OrderRepo>();На заметку! Веб-приложение MVC будет работать как с уровнем доступа к данным, так и с API-интерфейсом для взаимодействия с данными, чтобы продемонстрировать оба механизма.
Добавление строки подключения к настройкам приложения
Модифицируйте файл
, как показано ниже:appsettings.development.json{"Logging": {"LogLevel": {"Default": "Information","Microsoft": "Warning","Microsoft.Hosting.Lifetime": "Information"}},"ConnectionStrings": {"AutoLot": "Server=.,5433;Database=AutoLotFinal;User ID=sa;Password=P@ssw0rd;"}}Метод Configure()
Метод
применяется для настройки приложения на реагирование на запросы HTTP. Данный метод выполняется после методаConfigure(), т.е. все, что добавлено в контейнер DI, также может быть внедрено вConfigureServices(). Существуют различия в том, как приложения API и MVC конфигурируются для обработки запросов и ответов HTTP в конвейере.Configure()AutoLot.Api
Внутри стандартного шаблона выполняется проверка среды, и если она установлена в
(среда разработки), тогда в конвейер обработки добавляется промежуточное ПОDevelopment, предоставляющее отладочную информацию, которую вы вряд ли захотите отображать в производственной среде. Далее производится вызовUseDeveloperExceptionPage()для перенаправления всего трафика на HTTPS (вместо HTTP). Затем добавляются вызовыUseHttpsRedirection(),арр.UseRouting()иарр.UseAuthorization(). Вот полный код метода:арр.UseEndpoints()public void Configure(IApplicationBuilder app, IWebHostEnvironment env){if (env.IsDevelopment()){// Если среда разработки, тогда отображать отладочную информацию.app.UseDeveloperExceptionPage();// Первоначальный код.app.UseSwagger();app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json","AutoLot.Api v1"));}// Перенаправить трафик HTTP на HTTPS.app.UseHttpsRedirection();// Включить маршрутизацию.app.UseRouting();// Включить проверки авторизации.app.UseAuthorization();// Включить маршрутизацию с использованием конечных точек.// Использовать для контроллеров маршрутизацию с помощью атрибутов.app.UseEndpoints(endpoints =>{endpoints.MapControllers();});}Кроме того, когда приложение запускается в среде разработки, необходимо инициализировать базу данных. Добавьте в метод
параметр типаConfigure()и вызовите методApplicationDbContextизInitializeData().AutoLot.DalНиже показан модифицированный код:
public void Configure(IApplicationBuilder app,IWebHostEnvironment env,<b> ApplicationDbContext context)</b>{if (env.IsDevelopment()){// Если среда разработки, тогда отображать отладочную информацию.app.UseDeveloperExceptionPage();<b> // Инициализировать базу данных.</b><b> if (Configuration.GetValue<bool>("RebuildDataBase"))</b><b> {</b><b> SampleDataInitializer.InitializeData(context);</b><b> }</b>}...}Обновите файл
с учетом свойстваappsettings.development.json(пока что установив его вRebuildDataBase):false{"Logging": {"LogLevel": {