Pregunta

El método DataContext.GetTable () devolverá un objeto de tipo:

System.Data.Linq.Table

Al hacer esto, supongo que no he hecho un llamamiento a la base de datos para recuperar toda la tabla. De lo contrario, LINQ sería algo ineficaz.

Por lo tanto, todo lo que he hecho es taladro en mi clase inflexible DataContext (por ejemplo, dbDataContext) para agarrar una manija en, por ejemplo, su propiedad "Clientes", que representa la tabla de clientes en SQL Server.

A continuación, puedo obtener una IQueryable fuera el objeto devuelto por GetTable () y todavía no han afectado a la base de datos. Es decir, el código 'servicio de capa' será LINQ a objetos en lugar de LINQ to SQL.

Al hacer todo esto, se reducirá el número de repositorios que necesito.

Pregunta:

¿Son los supuestos anteriores correcto?

Nota:

Estoy tratando de encontrar una manera de construir mis consultas utilizando interfaces y los genéricos para que sea comprobable y todo lo que dah del doo.

Así que, pensando en la línea de la respuesta de @ zowen a:

patrón

Repositorio: Una clase de repositorio para cada entidad

Estoy tratando de poner en práctica

public interface IQueryProvider<T>
{
     TResult Query<TResult>(Func<IQueryable<T>, TResult> query);
}

No sé estrictamente necesario, pero estoy pasando por la curva de aprendizaje y mirando las opciones arquitectónicas que traje conmigo y cómo pienso.

lo que estoy tratando de hacer:

Estoy tratando de poner en práctica lo siguiente para SQL Server en lugar de MongoDB:

public class MongoQueryProvider<T> : IQueryProvider<T>
{
    private readonly IMongoCollection<T> collection;

    public MongoQueryProvider(IMongoDatabase database)
    {
        this.collection = database.GetCollection<T>();
    }

    public TResult Query<TResult>(Func<IQueryable<T>, TResult> query)
    {
        return query(this.collection.Linq());
    }
}

Lo que quiero es conseguir una manija en GetTable () y luego escribir mi servicio de capa de código LINQ contra de eso.

sospecho que voy a tener que escribir una interfaz de contenedor para obtener el equivalente de la variable de base de datos IMongoDatabase.

Sin embargo, la cuestión es la de arriba, no en este otro tema. Como digo, sólo estoy aprendiendo aquí. No hay código de producción va a ser lastimado en esta película.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top