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!

È stato utile?

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.

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