Puis-je spécifier un ensemble de paramètres de base pour un DataContext Linq-to-sql?

StackOverflow https://stackoverflow.com/questions/278281

  •  07-07-2019
  •  | 
  •  

Question

J'ai un DataContext LINQ-to-SQL qui représente une relation parent-enfant de Products to Prices. Je parcours une liste de produits et récupère les prix de chacun. Le problème est que les tables derrière les produits et les prix contiennent une liste de produits ou de prix pour plusieurs environnements, déterminée par une clé complexe à 3 champs. Je souhaite récupérer les produits et les prix pour un seul de ces environnements.

Je peux le faire en spécifiant une clause where longue dans chaque requête LINQ comprenant la clé de produit et la clé d’environnement complexe, comme suit:

var price = ( from condition in conditiontype where condition.MaterialNumber == material && condition.Client == "400" && condition.SalesOrg == "1000" && condition.DistributionChannel == "10" select condition.ConditionDetails[0].ConditionValue );

Ce que j'aimerais pouvoir faire est de spécifier globalement le client, le SalesOrg et le DistributionChannel pour le DataContext afin que tout ce que j'ai besoin de spécifier dans la requête soit l'ID de produit (MaterialNumber). Ainsi, lorsque je commence à interroger notre environnement de production, une simple modification du DataContext modifiera l'environnement dans lequel je l'interroge.

Est-ce possible? Un bref exemple de code ou des indications sur la théorie des bases serait merveilleux!

Était-ce utile?

La solution

Vous pourriez avoir un Expression<T> pré-écrit dans lequel vous avez ensuite ces valeurs:

public Expression<Func<int>> GetPrices = p => // do Lambda here

Vous pouvez également définir des propriétés dans votre DataContext (rappelez-vous que c'est une classe partielle facile à étendre) que vous définissez et que votre expression lit ensuite.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top