Объект должен реализовать запрос IConvertible LINQ to Entities, содержащий группировку - PullRequest
1 голос
/ 22 октября 2010

У меня есть приложение ASP.NET MVC, в котором я использую модель сущностей для подключения к базе данных MySQl

Здесь я присоединяюсь к двум таблицам, а затем применяю group by к одному из полей. Затем извлечение результата из результата GroupBy. На машине разработки все работает нормально, но появляется следующая ошибка:

Объект должен реализовывать IConvertible

Подскажите, пожалуйста, почему возникает такая ошибка? Я взял дамп сервера промежуточной формы базы данных, а затем использовал его на компьютере разработчика, а затем также работал нормально. Но когда я помещал дамп базы данных машины разработки в стадию подготовки, то получал то же исключение.

Так в чем же проблема, которую я не понимаю.

Структура модели

student:
studentid int 
course string
name string

student_payment:
id int 
studentid int 
amount decimal

Здесь ученик и ученик получают оплату за обучение от одного ко многим.

Запрос:

var query = from s in entity.student_payment.Include("student")
            group s by s.registrant.course into grp 
            select new 
            { 
                course = grp.Key, 
                count = (from studentcnt in grp select studentcnt.student.studentid), 
                payment = (from payment in grp select payment)
            };

foreach (var q in query) // exception is occurring here
{
    studentcount == q.count.Distinct().Count()
    iamount = payment.Sum(r => r.amount);
}

В запросе я применил GroupBy к курсу, а затем извлек запись из связанных таблиц.

Ответы [ 2 ]

0 голосов
/ 04 января 2016

Попробуйте обновить MySQL Server до версии 5.5x или выше.

https://downloads.mysql.com/archives/community/

0 голосов
/ 26 октября 2010

Я могу решить эту ошибку. Я думаю, что когда у нас есть связь между таблицами, то с group by мы не можем применить подзапросы select.

Поэтому я использую запрос select при анализе результирующего набора groupby..

var query = from s in entity.student_payment.Include("student")
            group s by s.registrant.course into grp 
            select new 
            { 
                course = grp.Key,     
            };

foreach (var q in query) // exception is occurring here
{
    var count = (from studentcnt in entity.student_payment.Include("student") where  student.course==q.course select studentcnt );               

    payment = (from payment in grp select payment)

    studentcount == count.Select(r=>r.student.studentid).Distinct().Count()

    iamount = count.Sum(r => r.amount);
}
...