I've made a simple Entity Framework ASP Core Application that works but I do not know why:
I've made a context like this:
public class AstootContext : DbContext
{
    public AstootContext(DbContextOptions<AstootContext> options)
        : base(options)
    { }
    public DbSet<Account> Accounts { get; set; }
    public DbSet<User> Users { get; set; }
}
And I have two tables with models like this:
public class Account
{
    public int Id { get; set; }
    public string Username { get; set; }
    public string PasswordHash { get; set; }
    public DateTime Created { get; set; }
    List<User> Users { get; set; }
}
public class User
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Email { get; set; }
    public DateTime Birthday { get; set; }
    public Account Account { get; set; }
}
The interesting thing is that when I run my application it actually can pick up the data. It just seems weird because I have not specified any table mapping. I'm assuming this just automaps because the specified tables are the same name.
My questions are:
- How do I specify Table explicit table mapping in case I do not want my model names to be exactly the same as the DB? 
- How do I specify Custom Column Mapping. 
- Is there anything special I have to specify for Primary/Foreign Keys 
edit
To clarify
- Say I had a table in the DB - MyAccountsand I wanted to map that to an entity- Accounts.
- Say I had a column - passwordand I wanted that to map to a POCO property- PasswordHash
 
    