0
我目前正在學習接口和存儲庫模式,並且遇到困難。我有域類 「VehicleMake」無法使用存儲庫模式從數據庫檢索數據
public class VehicleMake
{
public VehicleMake()
{
}
[Key]
[Column(Order = 1)]
public int Id { get; set; }
[Required]
[StringLength(50)]
public string Name { get; set; }
public virtual ICollection<VehicleModel> VehicleModels { get; set; }
}
我也有一個接口 「IVehicleRepository」
public interface IVehicleRepository
{
IEnumerable<VehicleMake> All { get; }
}
和類 「VehicleRepository」,它實現該接口
public class VehicleRepository : IVehicleRepository
{
private readonly VehicleDbContext _context;
public VehicleRepository(VehicleDbContext context)
{
_context = context;
}
public IEnumerable<VehicleMake> All => _context.VehicleMakes;
}
我的DbContext類以下
public class VehicleDbContext : DbContext
{
public VehicleDbContext() : base("VehicleDbContext")
{
}
public DbSet<VehicleMake> VehicleMakes { get; set; }
public DbSet<VehicleModel> VehicleModels { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
}
}
而我的「VehicleController」是繼
public class VehicleController : Controller
{
private readonly IVehicleRepository _vehicleRepository;
public VehicleController()
{
}
public VehicleController(IVehicleRepository vehicleRepository)
{
_vehicleRepository = vehicleRepository;
}
// GET: VehicleMakes
public ActionResult Index()
{
return View(_vehicleRepository.All);
}
}
所以問題是,當我試圖在我的控制器中檢索「車輛進行」,我得到空引用例外,我不知道爲什麼。我是否正確實施了這個?如果沒有,那麼做到這一點的正確方法是什麼?
在VehicleController刪除參數的構造函數,並請有一個測試 –
當我刪除它,我得到以下錯誤:「System.MissingMethodException:沒有爲此對象定義的無參數構造函數。」 – iantukic
發佈了一個答案,以使您的代碼正常工作。請看一看。 –