首页 > 解决方案 > 我的控制器功能没有从数据库中获取任何记录

问题描述

这是我的控制器和服务层代码

     public class BooksController : Controller
{
   private IBookService _bookService;
    public BooksController(IBookService bookService)
    {
        _bookService = bookService;
    }
    public BooksController()
    {

    }
    // GET: Books
    public ActionResult Index()
    {
        IEnumerable<Book> Books = _bookService.GetBooks().ToList();
        return View(Books);
    }
}

这是我对应的服务层代码的代码。

class BookService:ServiceBase<Book>,IBookService
{

    public BookService(IRepository<Book> repository, IUnitOfWork unitOfWork) : base(repository, unitOfWork)
    {
    }
    public IEnumerable<Book> GetBooksByName(string name)
    {
        return string.IsNullOrEmpty(name) ? UnitOfWork.BookRepository.GetAll() : UnitOfWork.BookRepository.GetAll().Where(c => c.Name == name);
    }
    public IEnumerable<Book> GetBooks()
    {
        return UnitOfWork.BookRepository.GetAll();
    }

}

我没有在视图中获得任何数据,而是说空引用异常。我想知道代码是如何工作的,因为我是存储库模式的新手,不知道问题出在哪里。请在这方面帮助我。

我正在将工作单元与存储库模式一起使用。

标签: c#model-view-controllerrepository-patternunit-of-work

解决方案


你有两个构造函数BooksController:一个有IBookService参数,一个没有。

Index()如果有人使用第二个构造函数,你希望你应该工作吗?您将收到 NullReferenceException 因为没有人初始化_bookService。嗯,你收到了。


推荐阅读