EF ICollection Vs List Vs IEnumerable Vs IQueryable

Por lo tanto, mi modelo de EF tiene relaciones y, de acuerdo con lo que he visto en los ejemplos, esas relaciones deben hacerse con las propiedades virtuales de ICollection.

Ejemplo:

 public class Task
    {
        public int Id { get; set; }
        public string Description { get; set; }
        public virtual ICollection<SubTask>  { get; set; }
    }

Leí en algún lugar que debería usar IEnumerable para evitar la ejecución diferida, ¿es correcto? Significa que si mis métodos DAL devuelven IEnumerable, aún de IQueryable, el SQL se ejecutará en ese momento, y no en el momento en que llame a .TOList en la página web.

Entonces, ¿cuál es la mejor práctica? ¿Qué debo devolver? IEnumerable, List, IList, ICollection?

Gracias

Respuestas a la pregunta(2)

Su respuesta a la pregunta