Я изо всех сил пытаюсь определить метод класса, который заполняет и возвращает коллекцию экземпляров. Проблема, которую я не знаю, как обойти, заключается в том, что у меня есть частные атрибуты для заполнения.Как написать методы класса, возвращающие коллекции экземпляров
Давайте рассмотрим пример класса книги. Я не хочу, чтобы код напрямую устанавливал (скажем) доступность книги. Я хочу, чтобы код должен был использовать метод CheckOut для экземпляра книги. Так что у нас есть что-то вроде:
public class Book
{
private int ID;
private bool pAvailableForCheckout;
public string Title { get; set; }
public bool AvailableForCheckout { get { return pAvailableForCheckout } }
// instance methods
public Book(int BookID)
{
// Load book from DB by ID
}
public CheckOut()
{
// perform everything involved with checking a book out
}
// .. other methods like saving a book, checking out books etc.
// class method
public static List<Book> FindAll()
{
// load Dataset of books
// foreach record in DB, use the Book(int BookID) constructor and add to List
// return list of books
}
}
Таким образом, я могу сделать, использовать это в моем коде:
foreach(Book curBook in Book.FindAll())
{ /* do something with book */ }
Проблема с выше реализацией является то, что я должен использовать N + 1 обращения к базе данных для загрузки всех книг вместо одного запроса. Как мне обойти это?
Я уверен, что это программирование 101, но мне нужно было спросить.
Приятный Я даже не думал об этом, но это кажется довольно очевидным, когда вы это говорите. –