Posso specificare un set di parametri di base per un DataContext Linq-to-sql?
-
07-07-2019 - |
Domanda
Ho un DataContext LINQ-to-SQL che rappresenta una relazione padre-figlio di Prodotti a Prezzi. Sto iterando attraverso un elenco di prodotti e recuperando i prezzi per ognuno. Il problema è che le tabelle dietro a Prodotti e Prezzi contengono un elenco di Prodotti o Prezzi per più ambienti, determinato da una chiave complessa a 3 campi. Voglio recuperare i prodotti e i prezzi solo per uno di questi ambienti.
Posso fare questo specificando una clausola long in ogni query LINQ composta dalla chiave del prodotto e dalla chiave di ambiente complessa, qualcosa del genere:
var price = ( from condition in conditiontype where condition.MaterialNumber == material && condition.Client == "400" && condition.SalesOrg == "1000" && condition.DistributionChannel == "10" select condition.ConditionDetails[0].ConditionValue );
ciò che vorrei poter fare è specificare il Cliente, SalesOrg e DistributionChannel a livello globale per DataContext in modo che tutto ciò che devo specificare nella query stessa sia l'ID prodotto (MaterialNumber). In questo modo, quando inizio a interrogare il nostro ambiente di produzione, una semplice modifica a DataContext cambierà l'ambiente che sto interrogando.
È possibile? O un breve esempio di codice o dei suggerimenti per la teoria di sfondo sarebbe meraviglioso!
Soluzione
Potresti avere una pre-scritta Expression<T>
che contiene quindi quei valori:
public Expression<Func<int>> GetPrices = p => // do Lambda here
In alternativa puoi mettere le proprietà nel tuo DataContext (ricorda, è una classe parziale quindi è facile da estendere) che imposti e che quindi leggi nella tua espressione.