powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Сортировка во View результата хранимой процедуры.
11 сообщений из 11, страница 1 из 1
Сортировка во View результата хранимой процедуры.
    #39673764
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имею Model - набор данных из созданной мной рекурсивной хранимой процедуры типа GetMessagesByHeadId_Result
Пытаюсь выполнить
Код: c#
1.
@foreach (var item in Model.OrderBy(i => i.MESS_TYPE).ThenBy(i => i.MESS_DATE))


получаю ошибку
Код: html
1.
CS1061: "Models.GetMessagesByHeadId_Result" не содержит определение для "OrderBy". Не удалось найти метод расширения "OrderBy", принимающий первый аргумент типа "Models.GetMessagesByHeadId_Result" (пропущена директива using или ссылка на сборку?)


при этом сортировка методом контроллера выполняется успешно
Код: c#
1.
return View(db.GetMessagesByHeadId(id).ToList().OrderBy(i => i.MESS_TYPE).ThenBy(i => i.MESS_DATE));
...
Рейтинг: 0 / 0
Сортировка во View результата хранимой процедуры.
    #39673770
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сборку linq во вью подруби
...
Рейтинг: 0 / 0
Сортировка во View результата хранимой процедуры.
    #39673905
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuсборку linq во вью подруби
Да я всё подрубил, что есть в контроллере - не помогло
Код: c#
1.
2.
3.
4.
5.
@using System.Data;
@using System.Data.Entity;
@using System.Linq;
@using System.Web.Mvc;
@using System.Net;
...
Рейтинг: 0 / 0
Сортировка во View результата хранимой процедуры.
    #39673939
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Курдль,

значит GetMessagesByHeadId_Result не реализует IEnumearble<T>
реализации IEnumerable недостаточно
Курдльпри этом сортировка методом контроллера выполняется успешноа где тут вообще GetMessagesByHeadId_Result? не вижу связи между двумя примерами
...
Рейтинг: 0 / 0
Сортировка во View результата хранимой процедуры.
    #39674246
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProКурдль,

значит GetMessagesByHeadId_Result не реализует IEnumearble<T>
реализации IEnumerable недостаточно
Курдльпри этом сортировка методом контроллера выполняется успешноа где тут вообще GetMessagesByHeadId_Result? не вижу связи между двумя примерами
Дополню исходный пример может быть не очевидным, но вытекающим из моего пояснения фактом определения модели, как

Код: c#
1.
2.
3.
@model Models.GetMessagesByHeadId_Result
...
@foreach (var item in Model.OrderBy(i => i.MESS_TYPE).ThenBy(i => i.MESS_DATE))


Приведенный выше код (в представлении) вызывает ошибку, а приведенный ниже код (в контроллере) - не вызывает
Код: c#
1.
return View(db.GetMessagesByHeadId(id).ToList().OrderBy(i => i.MESS_TYPE).ThenBy(i => i.MESS_DATE));


При этом GetMessagesByHeadId_Result - просто класс, инкапсулирующий свойства результата хранимой процедуры.
Он генерируется автоматически силами Entity Framework после определения хранимой процедуры в БД.
Сама хранимая процедура GetMessagesByHeadId благодаря EF приобретает такую проекцию в коде:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
        public virtual ObjectResult<GetMessagesByHeadId_Result> GetMessagesByHeadId(Nullable<int> headId)
        {
            var headIdParameter = headId.HasValue ?
                new ObjectParameter("HeadId", headId) :
                new ObjectParameter("HeadId", typeof(int));
    
            return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<GetMessagesByHeadId_Result>("GetMessagesByHeadId", headIdParameter);
        }


Я вызываю её в контроллере методом:
Код: c#
1.
2.
3.
4.
        public ActionResult Discussion(int id)
        {
            return View(db.GetMessagesByHeadId(id).ToList().OrderBy(i => i.MESS_TYPE).ThenBy(i => i.MESS_DATE));
        }
...
Рейтинг: 0 / 0
Сортировка во View результата хранимой процедуры.
    #39674296
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GetMessagesByHeadId(id) возвращает ObjectResult<GetMessagesByHeadId_Result>, который реализует IEnumerable<T>

В модели вы используете другой тип: Models.GetMessagesByHeadId_Result, который, очевидно, не реализует IEnumerable<T>
...
Рейтинг: 0 / 0
Сортировка во View результата хранимой процедуры.
    #39674313
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Курдльа приведенный ниже код (в контроллере) - не вызывает [ошибку]
Код: c#
1.
return View(db.GetMessagesByHeadId(id).ToList().OrderBy(i => i.MESS_TYPE).ThenBy(i => i.MESS_DATE));

А это вообще странно, так как в модель вы вообще пытаетесь передать третий вариант (IOrderedEnumerable<T>), то есть это не должно работать, так как @model объявлена другого типа. Либо вы вводите в заблуждение, либо представление не то используете, либо неверно что-то объявили
...
Рейтинг: 0 / 0
Сортировка во View результата хранимой процедуры.
    #39674453
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Shocker.Pro]Курдльа приведенный ниже код (в контроллере) - не вызывает [ошибку]
А это вообще странно, так как в модель вы вообще пытаетесь передать третий вариант (IOrderedEnumerable<T>), то есть это не должно работать, так как @model объявлена другого типа. Либо вы вводите в заблуждение, либо представление не то используете, либо неверно что-то объявили
Точно! Каюсь :( Ввел в заблуждение...
код
Код: c#
1.
@model Models.GetMessagesByHeadId_Result

добавлен в представления для эксперимента и не привел к устранению ошибки.
Позже я его убрал, как и
Код: c#
1.
.OrderBy(i => i.MESS_TYPE).ThenBy(i => i.MESS_DATE)


Тогда данные отображаются, как задумано, отсортированными в контроллере.
...
Рейтинг: 0 / 0
Сортировка во View результата хранимой процедуры.
    #39674456
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В представлении к Model можно применить .OrderBy только если корректно объявить @model
Иначе будет та же ошибка.
...
Рейтинг: 0 / 0
Сортировка во View результата хранимой процедуры.
    #39674459
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

И как Вы посоветуете объявить модель в моем случае, если все элементы модели я доверяю генерировать среде EF?
...
Рейтинг: 0 / 0
Сортировка во View результата хранимой процедуры.
    #39674480
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если вы все равно тащите EF-овскую модель прямо в представление, то тогда и объявляйте соответственно типу метода, всё равно у вас получается монолитная конструкция, если проект маленький и не планирует сильно расти, то сойдет.

В среднем-большом проекте делают модель представления.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Сортировка во View результата хранимой процедуры.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]