Comic book conversion I have two small structs (might change to classes later) that get loaded into Generic lists. The loading of the lists is what I'm asking about. Can it be done better or more object-oriented?

You'll notice I'm using MS Enterprise library for data access to a SqlCe database.

I'm just looking for some opinions on this code. Is there a more efficient way to do what I've written so far? My goal is to make the code as efficient and small as possible while still being maintainable and expandable.

 public class ConversionUtility
{

    private List&lt;ComicBook&gt; _books;
    private List&lt;ComicPublisher&gt; _publishers;

    private void Load()
    {
        try
        {
            _books = GetBooks();
            _publishers = GetPublishers();
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }

    public void PerformConversion()
    {
        Load();

       //still working on this

    }


    private List&lt;ComicPublisher&gt; GetPublishers()
    {
        List&lt;ComicPublisher&gt; tmp = new List&lt;ComicPublisher&gt;();

        Database db = EnterpriseLibraryContainer.Current.GetInstance&lt;Database&gt;("CeConnectionString");

        IDataReader rdr = db.ExecuteReader(CommandType.Text, "SELECT * FROM Publisher");

        while (rdr.Read())
        {
            tmp.Add(new ComicPublisher { Id = (int)rdr["PublisherId"], Name = rdr["PublisherName"].ToString() });
        }
        return tmp;

    }

    private List&lt;ComicBook&gt; GetBooks()
    {
        List&lt;ComicBook&gt; tmp = new List&lt;ComicBook&gt;();

        Database db = EnterpriseLibraryContainer.Current.GetInstance&lt;Database&gt;("CeConnectionString");

        IDataReader rdr = db.ExecuteReader(CommandType.Text, "SELECT * FROM Book");

        while (rdr.Read())
        {
            tmp.Add(new ComicBook { Id = (int)rdr["BookId"], Title = rdr["Title"].ToString(), Company = rdr["Company"].ToString() });
        }

        return tmp;

    }

}


public struct ComicPublisher
{
    public int Id { get; set; }
    public string Name { get; set; }
}

public struct ComicBook
{
    public int Id { get; set; }
    public string Title { get; set; }
    public string Company { get; set; }
}
Firstly:

Close your DataReaders!!!



Secondly:

You may want to consider abstracting boilerplate code like this:

  Database db = EnterpriseLibraryContainer.Current.GetInstance&lt;Database&gt;("CeConnectionString");
  IDataReader rdr = db.ExecuteReader(CommandType.Text, "SELECT * FROM Book");


Into some helper methods.