存储库构造函数不起作用

时间:2017-04-27 07:38:30

标签: api asp.net-core entity-framework-core

我正在使用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内部服务器错误(也在控制台中)。实际错误未显示。我找不到问题。为什么显示此错误。

提前致谢。 :)

1 个答案:

答案 0 :(得分:1)

您还需要添加DbContext。

var connection = @"Server=(localdb)\mssqllocaldb;Database=EFGetStarted.AspNetCore.NewDb;Trusted_Connection=True;";
    services.AddDbContext<BloggingContext>(options => options.UseSqlServer(connection));

这会将InventoryDbContext注入控制器。