У меня есть ASP. NET Core MVC приложение, которое использует Entity Framework Core O / RM. Я реализую шаблон репозитория generi c в моем приложении. Есть две сущности, Employee
& Department
. Существует один класс контекста EmployeeDepartmentDetails
. Существует интерфейс IGenericRepository
, который реализуется GenericRepository
. GenericRepository
имеет внедрение зависимостей EmployeeDepartmentDetails
. Мой контроллер EmployeeController
имеет внедрение зависимостей IGenericRepository
.
IGenericRepository.cs -
public interface IGenericRepository<TEntity> where TEntity : class
{
//...
}
GenericRepository.cs - Здесь EmployeeDepartmentDetails
- это мой контекстный класс, который наследует DBContext
class-
public class GenericRepository<TEntity> :IGenericRepository<TEntity> where TEntity : class
{
DbSet<TEntity> _dbSet;
// Dependency Injection
private readonly EmployeeDepartmentDetail _employeeDepartmentDetail;
public GenericRepository(EmployeeDepartmentDetail employeeDepartmentDetail)
{
_employeeDepartmentDetail = employeeDepartmentDetail;
_dbSet = _employeeDepartmentDetail.Set<TEntity>();
}
//...
}
Program.cs -
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run(); // I am getting those two exceptions here
}
StartUp.cs -
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
services.AddScoped(typeof(IGenericRepository<Type>), typeof(GenericRepository<Type>));
}
EmployeeController .cs -
public class EmployeeController : Controller
{
private readonly IGenericRepository<Employee> _genericRepository;
public EmployeeController(IGenericRepository<Employee> genericRepository)
{
_genericRepository = genericRepository;
}
//...
}
Когда я запускаю приложение, я получаю два исключения -
System.AggregateException HResult = 0x80131500 Сообщение = Некоторые службы не могут быть построены (Ошибка при проверке дескриптора службы 'ServiceType: InfrastructureLayer.GenericRepository.Interface.IGenericRepository 1[System.Type] Lifetime: Scoped ImplementationType: InfrastructureLayer.GenericRepository.Implementation.GenericRepository
1 [System.Type]': подходящий конструктор для типа 'InfrastructureLayer.GenericRepository.Implementation.GenericRepository 1[System.Type]' could not be located. Ensure the type is concrete and services are registered for all parameters of a public constructor.)
Source=Microsoft.Extensions.DependencyInjection
StackTrace:at Microsoft.Extensions.DependencyInjection.ServiceProvider..ctor(IEnumerable
optionsPoDescriptOccessServiceOzitorSourceSider в Microsoft.Extensions.DependencyInjection.ServiceCollectionContainerBuilderExtensions.BuildServiceProvider (IServiceCollection services, S Варианты erviceProviderOptions) в Microsoft.Extensions.DependencyInjection.DefaultServiceProviderFactory.CreateServiceProvider (IServiceCollection containerBuilder) в Microsoft.Extensions.Hosting.Internal.ServiceFactoryAdapter`1.CreateServiceProvider (containerBuilder Object) в Microsoft.Extensions.Hosting.HostBuilder.CreateServiceProvider () в Microsoft. Extensions.Hosting.HostBuilder.Build () в CrudEfCore.Program.Main (String [] args) в C: \ Users \ singh \ Desktop \ MVC \ GenericRepository \ CrudEfCore \ Program.cs: строка 16 Это исключение было первоначально сгенерировано в этом стеке вызовов: [Внешний код]
Внутреннее исключение 1: InvalidOperationException: Ошибка при проверке дескриптора службы 'ServiceType: InfrastructureLayer.GenericRepository.Interface.IGenericRepository 1[System.Type] Lifetime: Scoped ImplementationType: InfrastructureLayer.GenericRepository.Implementation.GenericRepository
1 [System.Type]': подходящий конструктор для типа 'InfrastructureLayer.GenericRepository.Implementation.GenericRepository`1 [System.Type]' не найден. Убедитесь, что тип конкретный, а службы зарегистрированы для всех параметров конструктора publi c.
Внутреннее исключение 2: InvalidOperationException: подходящий конструктор для типа 'InfrastructureLayer.GenericRepository.Implementation.GenericRepository`1 [System. Тип] 'не может быть найден. Убедитесь, что тип конкретный, а службы зарегистрированы для всех параметров конструктора publi c.
Я не могу понять исключение, я не знаю, что я делаю здесь неправильно. Я знаю, что вставил много кода, но даже не знаю, как объяснить исключение.