2017-04-27 62 views
0

我正在使用實體框架核心和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

您還需要添加DbContext。

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

這會將InventoryDbContext注入控制器。

+0

感謝兄弟,現在它的工作:) –