سؤال

هل هناك طريقة لطلب قائمة الكائنات من قبل عدد من الممتلكات التي هي عبارة عن مجموعة؟

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

إذا أريد nhibernate للحصول على قائمة "السؤال" الأجسام يمكن أن تأمر بها     Question.Answers.Count؟

ولقد حاول سبيل المثال الوثائق باستخدام HQL:

 List<Question> list = nhelper.NHibernateSession
        .CreateQuery("Select q from Question q left join q.Answers a group by q,a order by count(a)")
        .List<Question>();

ولكن أحصل

"column Question.Name is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause" 

ولقد حاولت إضافة كافة الخصائص إلى مجموعة من القائمة ولكنه لا يعمل. ما يحدث بعد ذلك هو أن حاليا المفتاح الخارجي يتسبب في الخطأ نفسه على النحو الوارد أعلاه ولكن لا أستطيع أن إدراجه في مجموعة من القوائم كما nhibernate أنها

Question.Users.UserId

والتي لا تحل إذا المدرجة.

وأي أفكار؟

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

المحلول 2

وأنا لا يمكن استخدام LINQ.

والطريقة لقد حلها (وكنت قد تقرر انها حمار) هو إنشاء عمود محسوب على قاعدة البيانات التي تحسب العد باستخدام UDF. وبعد ذلك وضعت العمود في تعيين السبات كما التحديث = "كاذبة" وإدراج = "كاذبة".

وأستطيع الآن تأمر بلدي الاستفسارات بحسب هذا الحقل الجديد كالمعتاد. يطيب لي واضاف منحة من أن تكون قادرة على ربط هذه القيمة في الأماكن التي تحتاج إليها في جميع أنحاء بلدي التطبيق.

ويبدو أن أداء طيب، ونأمل أنها ليست ستعمل يكلفني الكثير من الأداء.

نصائح أخرى

وجريت إلى هذه المسألة، واعتدت ينق للحصول على من حوله.

            var sort = from n in c
                       orderby q.Answers.Count
                       select n;

وأعتقد أن هذا بناء الجملة، إذا كان شخص ما يمكن أن يتحقق من شأنها أن تكون كبيرة أنا لم تستخدم LINQ أكثر من اللازم.

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