Не можете разрешить Scoped Service от root Provider - решение ошибки?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Не можете разрешить Scoped Service от root Provider - решение ошибки?

Сообщение Anonymous »

Я кодирую приложение с .NET MVC для печати данных из базы данных на страницу. Я установил пакет SqlServer SqlServer EntityFrameWorkCore и пакет инструментов EntityFrameWorkCore, создал некоторые классы базы данных, создал класс репозитория и создал и применил миграцию базы данных. : < /p>

Код: Выделить всё

ApplicationDbContext context = app.ApplicationServices.GetRequiredService()
< /code>
Я получен ошибкой:
"system.invalidoperationexception: «Не может разрешить Scoped Service 'SportsStore.Models.ApplicationDBContext' от root Provider. '" < /p> < Br />  Я знаю, что это связано с разрешением области программы, но я не уверен, какой код изменяется.  < /p>
Вот полный файл, SeedData.cs: < /p>
    using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;

namespace SportsStore.Models
{
public static class SeedData
{
public static void EnsurePopulated(IApplicationBuilder app)
{
ApplicationDbContext context = app.ApplicationServices.GetRequiredService();
if (!context.Products.Any())
{
context.Products.AddRange(
new Product
{
Name = "Kayak",
Description = "A boat for one person",
Category = "Watersports",
Price = 275
},
new Product
{
Name = "Lifejacket",
Description = "Protective and fashionable",
Category = "Watersports", Price = 48.95m
},
new Product
{
Name = "Soccer Ball",
Description = "FIFA-approved size and weight",
Category = "Soccer", Price = 19.50m
},
new Product
{
Name = "Corner Flags",
Description = "Give your playing field a professional touch",
Category = "Soccer",
Price = 34.95m
},
new Product
{
Name = "Stadium",
Description = "Flat-packed 35,000-seat stadium",
Category = "Soccer",
Price = 79500
},
new Product
{
Name = "Thinking Cap",
Description = "Improve brain efficiency by 75%",
Category = "Chess",
Price = 16
},
new Product
{
Name = "Unsteady Chair",
Description = "Secretly give your opponent a disadvantage",
Category = "Chess",
Price = 75
},
new Product
{
Name = "Bling-Bling King",
Description = "Gold-plated, diamond-studded King",
Category = "Chess",
Price = 1200
}
);
context.SaveChanges();
}
}
}
}
< /code>
Вот мой класс контекста базы данных, ApplicationDbContext.cs < /p>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;

namespace SportsStore.Models
{
public class ApplicationDbContext : DbContext
{
public ApplicationDbContext(DbContextOptions options)
: base(options) {} // provides access to Entity Framework Core's underlying functionality

public DbSet
 Products { get; set;  } // Provides access to the Product objects in the database.
}
}

// класс репозитория - efproductrepository.cs

Код: Выделить всё

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace SportsStore.Models{
public class EFProductRepository : IProductRepository
{
private ApplicationDbContext context;

public EFProductRepository(ApplicationDbContext ctx)
{
context = ctx;
}
public IEnumerable
 Products => context.Products; // maps the products property defined by IProductRepository onto Products property defined by the ApplicationDbContext class.
}
}
// startup.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using SportsStore.Models;
using Microsoft.Extensions.Configuration;
using Microsoft.EntityFrameworkCore;

namespace SportsStore
{
public class Startup
{
IConfigurationRoot Configuration;

public Startup(IHostEnvironment env)
{
Configuration = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json").Build();
}

// This method gets called by the runtime. Use this method to add services to the container.
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext(options =>
options.UseSqlServer(
Configuration["Data:SportStoreProducts:ConnectionString"])); // loads configuration settings in the appsettings.json file and makes them available through a property called Configuration.
services.AddTransient();
services.AddMvc(options => options.EnableEndpointRouting = false);
}

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseStatusCodePages();
app.UseStaticFiles();
}

app.UseRouting();

app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Product}/{action=List}/{id?}");
});
SeedData.EnsurePopulated(app);
}
}
}
< /code>
Если есть какие -либо полезные предложения, пожалуйста, дайте мне знать! /> Роберт
Лондон, Великобритания

Подробнее здесь: https://stackoverflow.com/questions/639 ... n-to-error
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»