I beginner in .NET , I learn to follow tutorial but I Have this Message error when run program
System.InvalidOperationException: Error while validating the service descriptor 'ServiceType: pwiapi.Data.ILineRepo Lifetime: Scoped ImplementationType: pwiapi.Data.SqlLineRepo': Unable to resolve service for type 'pwiapi.Data.LineContext' while attempting to activate 'pwiapi.Data.SqlLineRepo'. ---> System.InvalidOperationException: Unable to resolve service for type 'pwiapi.Data.LineContext' while attempting to activate 'pwiapi.Data.SqlLineRepo'. at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.CreateArgumentCallSites(Type serviceType, Type implementationType, CallSiteChain callSiteChain, ParameterInfo[] parameters, Boolean throwIfCallSiteNotFound) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.CreateConstructorCallSite(ResultCache lifetime, Type serviceType, Type implementationType, CallSiteChain callSiteChain) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.TryCreateExact(ServiceDescriptor descriptor, Type serviceType, CallSiteChain callSiteChain, Int32 slot) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.GetCallSite(ServiceDescriptor serviceDescriptor, CallSiteChain callSiteChain) at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngine.ValidateService(ServiceDescriptor descriptor) --- End of inner exception stack trace --- at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngine.ValidateService(ServiceDescriptor descriptor) at Microsoft.Extensions.DependencyInjection.ServiceProvider..ctor(IEnumerable`1 serviceDescriptors, IServiceProviderEngine engine, ServiceProviderOptions options)
And This My Code startup.cs:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ConfigurationContext>(options => { options.UseSqlServer(Configuration.GetConnectionString("ConnectionOne"));
});
services.AddControllers();
services.AddScoped<ILineRepo,SqlLineRepo>();
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "pwiapi", Version = "v1" });
});
}
so this my Data (SqlLineRepo.cs):
public class SqlLineRepo : ILineRepo
{
private readonly LineContext _context;
public SqlLineRepo(LineContext context)
{
_context = context;
}
public Line GetLineByNo(string lineNo)
{
return _context.Lines.FirstOrDefault(p => p.LINE_NO == lineNo);
}
public IEnumerable<Line> GetLines()
{
return _context.Lines.ToList();
}
}
this my interface (ILineRepo.cs)
using pwiapi.Models;
using System.Collections.Generic;
namespace pwiapi.Data
{
public interface ILineRepo
{
IEnumerable<Line> GetLines();
Line GetLineByNo(string lineNo);
}
}
this my controller :
namespace pwiapi.Controllers
{
[Route("api/commands")]
[ApiController]
public class LineController : ControllerBase
{
private readonly ILineRepo _repository;
public LineController(ILineRepo repository) {
_repository = repository;
}
//private readonly MockLineRepo _repository = new MockLineRepo();
[HttpGet]
public ActionResult<IEnumerable<Line>> GetAllLines() {
var lineItems = _repository.GetLines();
return Ok(lineItems);
}
[HttpGet("{lineno}")]
public ActionResult<Line> GetLineByNo(string lineno) {
var lineItem = _repository.GetLineByNo(lineno);
return Ok(lineItem);
}
}
}
any body can help to fix and explain what happen here?
I have fooking for how to fixed this, but program still error, i cant undestand
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
You need to register LineContext to the IServiceCollection.
services.AddDbContext<LineContext>(options => ...)
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0