Patrón de repositorio: ¿POCO o IQueryable?

Soy nuevo en el Patrón de repositorio y después de leer mucho en la web, tengo una comprensión aproximada de lo que está sucediendo, pero parece haber un conflicto de ideas.

One es lo que el IRepository debería devolver.

Me gustaría tratar SOLO Pocos para tener una implementación de IRepository para cada raíz agregada, así:

public class OrangeRepository: IOrangeRepository
{
  public Orange GetOrange(IOrangeCriteria criteria);
}

where IOrangeCriteria toma una serie de argumentos específicos para encontrar una Orange.

La otra cosa que tengo es una serie de back-end de datos, es por eso que entré en este patrón en primer lugar. Me imagino que tendré una implementación para cada uno, por ejemplo,

OrangeRepositoryOracle, OrangeRepositorySQL, OrangeRepositoryMock, etc.

Me gustaría mantenerlo abierto para poder usar EF o NHibernate; nuevamente, si mi IOrangeRepository trata en POCO, entonces encapsularía esto dentro del Repositorio en sí, implementando un OrangeRepositoryNHibernate, etc.

¿Estoy en la línea correcta?

Gracia

EDIT: ¡Gracias por los comentarios, no tengo a nadie más que rechace estas ideas en este momento, así que se lo agradezco!

Respuestas a la pregunta(2)

Su respuesta a la pregunta