我正在使用Entity框架核心和restful API开发一个asp.net核心项目。
以下是我的代码:
Startup.cs:
services.AddTransient<ISupplierRepository, SupplierRepository>();
SuppliersController.cs:
[Route("api/[controller]")]
public class SuppliersController : Controller
{
private ISupplierRepository _iSupplierRepository;
public SuppliersController(ISupplierRepository iSupplierRepository)
{
_iSupplierRepository = iSupplierRepository;
}
[HttpGet]
public IActionResult GetSupplier()
{
try
{
var suppliers= _iSupplierRepository.Gets();
return Ok(suppliers);
}
catch (Exception ex)
{
return BadRequest(ex.Message);
}
}
}
ISupplierRepository,cs:
public interface ISupplierRepository
{
List<Supplier> Gets();
}
SupplierRepository.cs:
public class SupplierRepository : ISupplierRepository
{
private static InventoryDbContext _context;
public SupplierRepository(InventoryDbContext context)
{
_context = context;
}
public List<Supplier> Gets()
{
return _context.Suppliers.ToList();
}
}
我的问题是当我调用api http://localhost:53775/api/suppliers然后它在我删除“SupplierRepository.cs”的构造函数部分时工作。但是当我想用SupplierRepository.cs构造函数调用那个api然后直接显示500内部服务器错误(也在控制台中)。实际错误未显示。我找不到问题。为什么显示此错误。
提前致谢。 :)
答案 0 :(得分:1)
您还需要添加DbContext。
var connection = @"Server=(localdb)\mssqllocaldb;Database=EFGetStarted.AspNetCore.NewDb;Trusted_Connection=True;";
services.AddDbContext<BloggingContext>(options => options.UseSqlServer(connection));
这会将InventoryDbContext注入控制器。