Функция My Controller не получает никаких записей из базы данных - PullRequest
0 голосов
/ 28 августа 2018

Вот мой контроллер и код уровня обслуживания

     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();
    }

}

Я не получаю никаких данных в представлении, скорее, это исключение нулевой ссылки. Я хочу знать, как работает код, потому что я новичок в шаблоне репозитория и не знаю, в чем проблема. Пожалуйста, помогите мне в этом отношении.

Я использую Unit of Work с шаблоном хранилища.

1 Ответ

0 голосов
/ 28 августа 2018

У вас есть два конструктора в BooksController: один с IBookService параметром и один без.

Как вы думаете, ваш Index() должен работать, если кто-то будет использовать второй конструктор? Вы получите NullReferenceException, потому что никто не инициализировал _bookService. Ну, вы получаете это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...