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
发布了一个答案,以使您的代码正常工作。请看一看。 –