I have a simple project in which i have the following model.
Customer 1--->N Addresses N<----1 City N<----1 Country
                     ^
                    N|
                     |
AddressTypes 1-------+
Here is my code:
public partial class Customer {
        public Customer() {
            this.Address = new HashSet<Address>();
        }
        public int Id {get;set;}
        public string FirstName {get;set;}
        public string LastName {get;set;}
        public System.DateTime Birthday {get;set;}
        public virtual ICollection<Address> Address {get;set;}
    }
public partial class Address {
        public int Id {get;set;}
        public string Street {get;set;}
        public string Area {get;set;}
        public string Post {get;set;}
        public bool isDeleted {get;set;}
        public virtual Customer Customer {get;set;}
        public virtual City City {get;set;}
        public virtual AddressType AddressType {get;set;}
    }
public partial class AddressType {
        public AddressType() {
            this.Address = new HashSet<Address>();
        }
        public int Id {get;set;}
        public string Name {get;set;}
        public virtual ICollection<Address> Address {get;set;}
    }
public partial class Country {
        public Country() {
            this.City = new HashSet<City>();
        }
        public int Id {get;set;}
        public string Name {get;set;}
        public virtual ICollection<City> City {get;set;}
    }
public partial class City {
        public City() {
            this.Address = new HashSet<Address>();
        }
        public int Id {get;set;}
        public string Name {get;set;}
        public virtual ICollection<Address> Address {get;set;}
        public virtual Country Country {get;set;}
    }
public partial class MyModelContext : DbContext {
        public MyModelContext()
            : base("name=MyModelContext") {
            this.Configuration.LazyLoadingEnabled = true;
            this.Configuration.ProxyCreationEnabled = false;
        }
        public virtual DbSet<Country> Countries {get;set;}
        public virtual DbSet<City> Cities {get;set;}
        public virtual DbSet<AddressType> AddressTypes {get;set;}
        public virtual DbSet<Address> Addresses {get;set;}
        public virtual DbSet<Customer> Customers {get;set;}
    }
I want to return a list of customers. At first i tried to do a simple Customers.ToList() but i was getting an exception during serialization and i read that this was caused by cyclical references. So i added 
Configuration.LazyLoadingEnabled = true;
Configuration.ProxyCreationEnabled = false;
and then i was able to get the customers but without the addresses. I tried doing:
public List<Customer> getCustomers() {
    MyModelContext db = new MyModelContext();
    return db.Customers.Include("Address").ToList();
}
but i don't know how to retrieve ALL the properties. I want to get in the list every customer and his addresses including the city, country, addresstype of each address. How can i do it?
 
     
    