Filtrado de propiedades de navegación en el Código EF Primero

Estoy usando Code First en EF. Digamos que tengo dos entidades:

public class Farm
{
    ....
    public virtual ICollection<Fruit> Fruits {get; set;}
}

public class Fruit
{
    ...

}

Mi DbContext es algo como esto:

public class MyDbContext : DbSet
{
    ....
    private DbSet<Farm> FarmSet{get; set;} 

    public IQueryable<Farm> Farms
    {
        get
        {
            return (from farm in FarmSet where farm.owner == myowner select farm);
        }
    }
}

Hago esto para que cada usuario solo pueda ver sus granjas de servidores, y no tengo que llamar a Where en cada consulta a la db.

Ahora, quiero filtrar todas las frutas de una granja, probé esto (en la clase Granja):

from fruit in Fruits where fruit .... select fruit

pero la consulta generada no incluye la cláusula where, que es muy importante porque tengo docenas de miles de filas y no es eficiente cargarlas todas y filtrarlas cuando son Objetos.

Leí que las propiedades cargadas perezosas se llenan la primera vez que se accede, pero leen TODOS los datos, no se pueden aplicar filtros A MENOS QUE hagas algo como esto:

from fruits in db.Fruits where fruit .... select fruit

Pero no puedo hacer eso, porque Farm no tiene conocimiento de DbContext (no creo que deba (?)), Pero también me pierde el propósito de usar las propiedades de navegación si tengo que trabajar con todos los datos. Y no solo el que pertenece a mi Granja.

Asi que,

¿Estoy haciendo algo mal / haciendo suposiciones erróneas?¿Hay alguna manera de aplicar un filtro a una propiedad de navegación que se genere en la consulta real? (Estoy trabajando con muchos datos)

¡Gracias por leer!

Respuestas a la pregunta(3)

Su respuesta a la pregunta