هل يمكنني تحديد مجموعة من المعلمات الأساسية لـ Linq-to-sql DataContext؟

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

  •  07-07-2019
  •  | 
  •  

سؤال

لدي LINQ-to-SQL DataContext الذي يمثل علاقة بين المنتجات والأسعار بين الوالدين والطفل.أقوم بتكرار قائمة المنتجات واسترداد الأسعار لكل منتج.تكمن المشكلة في أن الجداول الموجودة خلف كل من المنتجات والأسعار تحتوي على قائمة بالمنتجات أو الأسعار لبيئات متعددة، يتم تحديدها بواسطة مفتاح معقد مكون من 3 حقول.أريد استرداد المنتجات والأسعار الخاصة ببيئة واحدة فقط من تلك البيئات.

يمكنني القيام بذلك من خلال تحديد عبارة طويلة في كل استعلام LINQ تتكون من مفتاح المنتج ومفتاح البيئة المعقد، شيء من هذا القبيل:

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

ما أود أن أكون قادرًا على فعله هو تحديد Client وSalesOrg وDistributionChannel عالميًا لـ DataContext بحيث يكون كل ما أحتاج إلى تحديده في الاستعلام نفسه هو معرف المنتج (MaterialNumber).بهذه الطريقة، عندما أبدأ في الاستعلام عن بيئة الإنتاج الخاصة بنا، سيؤدي تغيير بسيط في DataContext إلى تغيير البيئة التي أقوم بالاستعلام عنها.

هل هذا ممكن؟سيكون من الرائع الحصول على عينة تعليمات برمجية مختصرة أو مؤشرات لنظرية الخلفية!

هل كانت مفيدة؟

المحلول

يمكن أن يكون لديك مكتوبة مسبقا Expression<T> والتي لديك بعد ذلك تلك القيم فيه:

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

وبدلاً من ذلك، يمكنك وضع الخصائص في DataContext الخاص بك (تذكر أنه ملف جزئي class لذا فمن السهل توسيعها) والتي قمت بتعيينها ثم تتم قراءتها من خلال تعبيرك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top