سؤال

أحاول إجراء بسيط الكلي الاستعلام بإرجاع مجموع نتيجة بالإضافة إلى عمود إضافي.هذا المنصب -> استعلام مخصص مع القلعة ActiveRecord كان مثال جيد عن كيفية تحقيق ذلك, ولكن أنا لا يمكن أن يبدو للحصول على عمل.يبدو أن ActiveRecordMediator.ExecuteQuery يعود ArrayList من الكائنات (بدلا من ArrayList من وجوه[] وهو ما أتوقع).أيضا إذا كنت تحاول أن يلقي ذلك إلى ICollection أحصل على خطأ وقت التشغيل تشكو من صالح الزهر.رمز أدناه ، أي مساعدة تقدير (لا تريد استخدام مكتوبة بخط اليد sql).

HqlBasedQuery query = new HqlBasedQuery(typeof(Something), @"select count(1),  
  p.Name from Something p 
  where p.SomeDate > :date
  order by p.Name
  group by p.Name");

query.SetParameter("date", new DateTime(2009, 1, 1));

var results = from summary in 
    (ICollection<object[]>)ActiveRecordMediator.ExecuteQuery(query)
    select new {
        Count = (int)summary[0], Name= (string)summary[1]
    };

الخط بعد "من ملخص في" هو الذي يلقي صالح يلقي استثناء.

(نسيت أن أذكر:باستخدام VS2008, .صافي 3.5SP1, ActiveRecord 1.0RC3, NHibernate 1.2)

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

المحلول

  1. أعتقد أنك قصدت count(*) بدلا من count(1) (هذا هو السبب في أنك تحصل على فقط 1-العقيد الصفوف)
  2. ActiveRecordMediator.ExecuteQuery (على الأقل في RC3) بإرجاع ArrayList (ليس عام ICollection) من object[]
  3. كن حذرا الصب count نتائج الباحث.بعض قواعد البيانات المقابل يعتبر long (مثلا ، SQL Server)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top