Я получил этот код, и он работает без проблем. Но я чувствую, что есть гораздо лучший способ сделать это.
namespace Repositories
{
public class AuthorRepository : IAuthorRepository
{
public List<Author> GetAllFromRepo()
{
using (AppContext myDB = new AppContext())
{
List<Author> authorsFromRepo = new List<Author>();
foreach (var item in myDB.Authors)
{
authorsFromRepo.Add(new Author()
{
Books = new List<Book>(),
ID = item.ID,
FirstName = item.FirstName,
LastName = item.LastName
});
}
return authorsFromRepo.ToList();
}
}
}
}
Когда я пробую что-то вроде этого:
public List<Author> GetAllFromRepo()
{
using (AppContext myDB = new AppContext())
{
List<Author> authorsFromRepo = new List<Author>();
authorsFromRepo = myDB.Authors.ToList();
return authorsFromRepo;
}
}
Я всегда получаю эту ошибку:
Значение не может быть нулевым.
Имя параметра: источник
Сведения об исключении: System.ArgumentNullException: значение не может быть нулевым.
Имя параметра: источник
Ошибка источника: строка 33: вернуть авторов. Выберите (x => new AuthorViewModel ()
Любая помощь?
Модель, куда меня выводит ошибка
namespace Services
{
public class AuthorService : IAuthorService
{
private readonly IAuthorRepository _AuthorRepository;
public AuthorService(IAuthorRepository authorRepository)
{
_AuthorRepository = authorRepository;
}
public List<AuthorViewModel> GetAll()
{
List<Author> authors = _AuthorRepository.GetAllFromRepo();
return authors.Select(x => new AuthorViewModel()
{
ID = x.ID,
FullName = $"{x.FirstName } {x.LastName} ",
Books = x.Books.Select(g => new BookViewModel()
{
ID = g.ID,
Name = g.Name
}).ToList()
}).ToList();
}
}
}
Чтобы добавить еще раз, все работает нормально, если я использую первый пример кода.
Когда я пытаюсь что-то короткое, как
return myDB.Authors.ToList();
я получаю ошибку.
когда я перехожу на:
return authors.Select(x => new AuthorViewModel()
{
ID = x.ID,
FullName = $"{x.FirstName } {x.LastName} ",
Books = {}
}).ToList();
Тогда это работает ... но это означает, что он не читает книги авторов ...