LINQ والاستفسارات ديناميكية مع الاستدعاء وبدون مصمم الرسم Linq2SQL

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

  •  05-07-2019
  •  | 
  •  

سؤال

ولقد حاولت بعض الطرق لاستخدام LINQ الاستفسارات الحيوية - LINQKit و LINQ مكتبة سؤال الحيوي. أنا لا أحب ثاني لأنه بعض الطريق تقتل فكرة LINQ - أن تكون قادرة على التحقق من الاستفسارات في وقت الترجمة. ومع LINQKit لم أجد مثالا جيدا لسيناريو بلدي. كما أنني لا أحب الإفراط في استخدام التفكير.

وبلدي السيناريو التالي. لدي خدمة الإنترنت التي تقوم منطق الأعمال والمنطق DAL. يتم فصل تطبيق نماذج الويب. لدي بعض الصفحات مع tickboxes لكل حقل المستخدم يرغب في تصفية، وأيضا مربع النص لإدخال كل قيمة التصفية. خدمة الإنترنت التي أعمل لديها GetByFilter طريقة أين أنا تمرير بعض قائمة. QueryObject هي فئة مع سلسلة: filedName، وجوه: fieldValue

وبعد ذلك يتلقى بلدي خدمة ويب قائمة الكائنات الاستعلام والآن يأتي السؤال الكبير: كيف يمكن ترجمتها إلى استعلام LINQ إذا كان عدد الميدانية وقيم التصفية قد تختلف؟

ما هو أسوأ من ذلك - أنا لا أستعمل مصمم الرسم Linq2SQL ولكن يمكنني استخدام بعض DAL مخصصة مع المستودعات التي قد ترجع IQuery إذا لزم الأمر (مثل هذا واحد: http://msdn.microsoft.com/en-us/magazine/dd569757. ASPX انتقل إلى مستودع).

وأعرف أنني أستطيع أن استخدام الترحيل مع مصمم الرسم Linq2SQL: فار PagedData = query.Skip ((iPageNum - 1) * iPageSize) .Take (iPageSize)؛

وهكذا فكيف يمكنني الحصول على المعلمات ديناميكية الاستعلام (وiPageNum وiPageSize) من LINQ إلى بلدي تنفيذ DAL الأساسي لتنفيذ تلك الاستفسارات بطريقة معينة dataprovider؟ ربما لدي لتنفيذ بلدي DAL عن بعض موفر البيانات LINQ (ليس لدي أي فكرة عن كيفية القيام بذلك)؟

والمشكلة هي - أنا لا أريد أن تعتمد على مصمم الرسم Linq2SQL (ثم أتمكن من مجرد تنفيذ المستودعات بصفتي مغلفة لمصمم الرسم Linq2SQL) ولكن في نفس الوقت أريد أن يكون LINQ الاستعلام عن قدراتهم في كل مكان خارج بلدي DAL. هل من الممكن؟

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

المحلول

ومن الممكن بالتأكيد، ما كنت تبحث لهو خلق IQueryable الخاص بك، و"العرف مزود LINQ"

وفيما يلي المقال MSDN: http://msdn.microsoft.com/ أون لنا / مكتبة / bb546158.aspx ومات وارن حصلت على سلسلة بلوق على ذلك: <لأ href = "http://blogs.msdn.com/mattwar/archive/2007/07/30/linq-building-an-iqueryable-provider-part-i.aspx "يختلط =" noreferrer نوفولو "> http://blogs.msdn.com/mattwar/archive/2007/07/30/linq-building-an-iqueryable-provider-part-i.aspx

وأوصي بدءا عليها لمعرفة مدى صعوبة أنه قد يكون وسواء كان ذلك يستحق كل هذا العناء بالنسبة لك!

وإذا قررت ضدها، لديها قراءة هذا بلوق وظيفة: HTTP: // شبكة الاتصالات العالمية .hanselman.com / بلوق / RealWorldAppsInDaysNotWeeks.aspx ومعرفة ما اذا ADO.Net خدمات البيانات (أستوريا) هي من أي استخدام لكم

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