Having a class return a single database instance or list of all database instances
First, I don't like the concept of mixing "Models" with "Repository". 

One principle that, from my point of view, should be followed, is the Single Responsibility (the S in SOLID). It means that one class should have one responsibility, and only one. Therefore yours would be against this principle, simply because you are holding your data, and loading data from the database.

If you want to follow this Principle, you would have one class "PersonRepository", that handles getting/updating data to the database, and a second class "Person", which is the person itself. 

PersonRepository personRepository = new PersonRepository();
Person person = personRepository.Find(1); // Would return a person
List&lt;Person&gt; persons = personRepository.FindAll(); // Would return all records


Anyway, regarding your implementation, the point that are bad :


Constructors --> Never do any database related/IO operation in constructor. How would you handle the exception ? You would have an object created (as you cannot destruct them), but actually a "not working" object. Bad practice. And as said by Nick, it will not be clear for the user of the class that this load the user from database. Imagine he wants to create a Person with a predefined ID, he may think using the "ID" for the constructor would be the way to go
As said before, Load and List should be static.
Why is the "LoadFromDatabase" id mandatory ? Use optional parameters, in example :

... LoadFromDataBase(int personId = 0);

Same for the constructor
Imagine now you have a webpage/grid in an application that should display some filtered value, or paginated. How would you handle this ? You would create tons of method within your person class to "LoadFromDatabaseFilterByName(String name)", "LoadFromDatabasePage(2)",... And this would mess up with real method of the class (see first paragraph.
As said by Nick, the LoadFromDataBase is really... strange.