Cómo mapear las clases de modelo de Entity Framework con la clase Business Layer en la arquitectura de n niveles - ASP.NET-MVC

Estoy trabajando en la arquitectura de nivel electrónico dentro del marco MVC (ASP.NET MVC5, Entity Framework 6). Mi aplicación se divide en tres subproyectos que son Business-Layer, Data-Access-Layer, Repository (Esto incluye el repositorio y la Unidad de trabajo) y la aplicación web ASP.NET MVC. Me cuesta entender el mapeo entre los datos comerciales y el modelo de marco de entidad. por ejemplo si tengo la clase de modelo Usuario en el marco de la entidad como

DAL - Modelo de usuario
[Table("User")]
public class User
{
    public User() { }

    [Key]
    public int UserID { get; set; }

    [StringLength(250)]
    [Required]
    public string FirstName { get; set; }

    [StringLength(250)]
    [Required]
    public string LastName { get; set; }

    [Required]
    public int Age { get; set; }

    [StringLength(250)]
    [Required]
    public string EmailAddress { get; set; }

    public ICollection<UserInGroup> UserInGroup { get; set; }
}

y en la capa empresarial tengo clase de usuario

BLL - Clase de usuario
public class User
{
    private string userID;
    private string firstName;
    private string lastName; 
    private int age;
    private string emailAddress;


    public string UserID
    {
        get { return userID; }
        set { userID = value; }
    }

    public string FirstName
    {
        get { return firstName; }
        set { firstName = value; }
    }

    public string LastName
    {
        get { return lastName; }
        set { lastName = value; }
    }

    public int Age
    {
        get { return age; }
        set { age = value; }
    }

    public string EmailAddress
    {
        get { return emailAddress; }
        set { emailAddress = value; }
    }

    public void GetAllUser()
    {
        List<App.DAL.Model.User> _user = new List<DAL.Model.User>();

        using (var _uow = new UserManagement_UnitOfWork())
        {

            _user = (from u in _uow.User_Repository.GetAll()
                     select u).ToList();

        }           
    }
}

Cómo mapeo juntos y en segundo lugar; refiriéndome al método GetAllUser (), todavía necesito usar la clase de modelo de usuario de DAL para obtener todos los usuarios de la base de datos, donde está mi comprensión actual; cada capa debe ser independiente entre sí y tengo una capa de abstracción, es decir, un repositorio entre la capa de acceso a datos y la capa empresarial. Estoy un poco confundido con ambos conceptos trabajando juntos. ¿Estoy en el camino correcto o me falta algo? También se necesita una respuesta práctica en la capa empresarial del usuario.

Respuestas a la pregunta(3)

Su respuesta a la pregunta