سؤال

أقوم بالوصول إلى كائن سياق البيانات الذي يتم إنشاؤه تلقائيًا باستخدام LINQ إلى SQL. قاعدة بيانات SQL عبارة عن مربع SQL Server 2000. الفصل الذي أعمل معه هو عرض SQL. لدي بيان مشابه لهذا:

query = _context.OrderDetails
    .Where(w => w.Product == "TEST")
    .OrderBy(o => o.DateCompleted)
    .ThenBy(t => t.LineItemId)
    .Skip(startRowIndex) 
    .Take(maximumRows);

ومع ذلك ، عندما لا تكون قيمة التخطي سوى 0 ، أحصل على هذا الخطأ:

يدعم هذا الموفر Skip () فقط على الاستعلامات المرتبة فقط الكيانات أو الإسقاطات التي تحتوي على جميع أعمدة الهوية ، حيث يكون الاستعلام هو استعلام واحد (غير متصل) ، أو هو متميز ، باستثناء ، أو اتحاد (وليس متسلقي) عملية.

أعتقد أنه بين teh datecfled و lineItemId أن الصفوف ستكون فريدة من نوعها ، ولكن مرة أخرى هذا يبرز. هل لها علاقة بهذا كونه وجهة نظر؟ إذا كان الأمر كذلك ، كيف يمكنني التحايل على هذه المشكلة؟

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

المحلول

أعتقد أن ما تقوله هو أنه إذا لم يكن لديك عمود هوية على جدول OrderDetails ، فأنت بحاجة إلى إضافة .distinct () هناك أو أحد المشغلين الآخرين المذكورة.

نصائح أخرى

يحتوي SQL Server 2000 على بعض "السباكة" المفقودة التي يتعين على LINQ الالتفاف عليها من أجل إجراء SKIP واتخاذ الوظائف. هذا يقيد بشكل كبير الشروط التي يمكنك من خلالها استخدام هذه الوظائف مع SQL Server 2000.

تأكد من تضمين عمود الهوية في _context.OrderDetails, ، وأنك تفي بجميع الشروط الأخرى كما هو مذكور في رسالة الخطأ.

بالطبع ، يمكنك دائمًا الترقية إلى SQL Server 2005 أو أحدث. قون

مزيد من المعلومات هنا: http://msdn.microsoft.com/en-us/library/bb386988.aspx

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