Domanda

Il metodo DataContext.GetTable () restituirà un oggetto di tipo:

System.Data.Linq.Table

Per fare ciò, presumo che non ho rilasciato una chiamata al database per recuperare l'intera tabella. In caso contrario, LINQ sarebbe un po 'inefficiente.

Quindi, tutto ciò che ho fatto è trapano nella mia classe fortemente tipizzato DataContext (ad esempio, dbDataContext) per afferrare una maniglia su, per esempio, la sua "I clienti" proprietà, che rappresenta la tabella Clienti in SQL Server.

I può quindi ottenere un IQueryable fuori l'oggetto restituito da GetTable () e ancora non hanno colpito il database. Vale a dire, il mio codice 'Service Layer' sarà LINQ to Objects, piuttosto che LINQ to SQL.

Per fare tutto questo, mi consentirà di ridurre il numero di repository che ho bisogno.

Domanda:

Sono le ipotesi di cui sopra sono corretti?

Nota:

Sto cercando di trovare un modo per costruire la mia query utilizzando interfacce e farmaci generici per rendere testabile e tutto ciò che dah doo.

Quindi, pensando lungo le linee di risposta di @ zowen a:

modello

Repository: Una classe repository per ogni entità

Sto cercando di implementare

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

Non so strettamente necessario, ma ho intenzione attraverso la curva di apprendimento e guardando le opzioni architettoniche che vestito me e come penso.

Quello che sto cercando di fare:

Sto cercando di implementare i seguenti per SQL Server invece di 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());
    }
}

Quello che voglio è quello di ottenere una maniglia su GetTable () e poi scrivere il mio servizio strato di codice LINQ contro quella.

Ho il sospetto che dovrò scrivere un wrapper per un'interfaccia ottenere l'equivalente della variabile di database IMongoDatabase.

Tuttavia, la questione è quello di cui sopra, non questa altra questione. Come ho detto, sto solo imparando qui. Nessun codice di produzione sarà male in questo film.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top