我正在努力定义一个填充并返回实例集合的类方法。我不知道如何解决的问题是我有私有属性要填充。
让我们使用 Book 类的示例。我不希望代码直接设置(比如说)一本书的可用性。我希望代码必须在 Book 实例上使用 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 次命中来加载所有书籍,而不仅仅是 1 个查询。我该如何解决这个问题?
我确定这是编程 101,但我需要问一下。