У меня есть приложение MVC, в котором мне нужно отобразить данные из 3 таблиц. Я использую модель сущности для этого. Из них в 2 я сделал ассоциацию: пользователи и таблица платежей.
И 3-я таблица month_<monthid>
создается каждый месяц для хранения пользователей, которым отправляется журнал. Имя таблицы month_<monthid>
генерируется динамически путем выбора месяца, поэтому для извлечения данных я использовал ExeuteStoreQuery. Для небольшого количества данных листинг быстрый, но для большого количества очень медленный.
Теперь я создал класс для привязки к сетке, который будет включать все поля из 3 таблиц для отображения.
Но здесь, когда я получаю большой объем данных около 12000, тогда требуется около 30 минут, чтобы пройти цикл и присвоить данные объекту класса, а затем добавить его в список результатов, который в итоге привязывается к сетке Telerik.
Я прилагаю пример кода, используя ссылку. Есть ли прямой способ привязать результат запроса объединенных таблиц к сетке вместо прохождения цикла и подготовки списка для класса модели, который, я думаю, сэкономит время.
Блок кода для подготовки списка с использованием Executestorequery находится под функцией GetuserList ().
foreach (var r in result)
{
Result objresult = new Result();
var paymentresult = from sub in dtpayment.AsEnumerable() where sub.Field<int>("user_id") == r.user_id select sub;
if (paymentresult.Count() > 0)
{
objresult.amount_paid = paymentresult.FirstOrDefault().Field<decimal>("amount_paid");
objresult.magzine_id = paymentresult.FirstOrDefault().Field<int>("magzine_id");
}
objresult.address=r.address;
objresult.email=r.email;
objresult.name=r.name;
objresult.user_id=r.user_id;
objresult.month= smonth;
lstresult.Add(objresult);
}
Этот блок кода цикла for занимает очень много времени, когда я использую ExceuteStoreQuery.
Но я заметил, что при простом объединении пользователей и таблицы платежей с помощью запроса LINQ для получения всех 12000 записей, т.е. без участия таблицы месяцев, результат появляется быстрее.
Итак, можете ли вы предложить какой-либо способ улучшить производительность моего приложения?
Также включите структуру базы данных с примером кода.
Ниже приведена ссылка на образец
http://sampletestone.s3.amazonaws.com/magzine.7z?AWSAccessKeyId=AKIAINHDRCMKC5GUSNFA&Expires=1303583399&Signature=8o8Wn6UNjbEl3dIyipAX9xH29Hg%3D
Supriya