powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Dapper - как изменить результаты при мапинге?
6 сообщений из 6, страница 1 из 1
Dapper - как изменить результаты при мапинге?
    #39200380
Фотография Sputnick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем Привет!

Использую dapper, подскажи пжлста как можно изменить/дополнить результаты выбрки при мапинге на модель?

Стандартно:
Код: c#
1.
Rez = db.Query<calendarevents>("SELECT top 12 Id, Title, Description").ToList();



но что если мне нужно еще динамично на лету сгенерировать поле Link например?
Rez = db.Query<calendarevents>("SELECT top 12 Id, Title, Description, Link="http:\\site.\home\event\"+Id").ToList();

В EF бинд писался вручную, но можно было любые манипуляции с данными выборки делать, а тут как то можно правильно, кроме такого велосипеда:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 List<EventsForMain> Ev = new List<EventsForMain>();
Events= db.Query<calendarevents>("SELECT top 12 Id, Title, Description).ToList();

List<EventsForMain> t = new List<EventsForMain>();
            foreach (EventsForMain item in Events)
            {

                t.Add(new EventsForMain {   Event_Id = item .Event_Id,   Title = item .Title,  Link="http:\\site.\home\event\"+item .Event_Id"  });  
            }

            return t;



то есть колонки Link нет в БД, а мне она нужна, и часто бывает нужно изменить результат выборки и подавать измененный.

Спасибо.
...
Рейтинг: 0 / 0
Dapper - как изменить результаты при мапинге?
    #39200407
monstrU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sputnick,

а ты тут разделяй - доменная модель или view модель.
dapper тебе возвращает объект - аналог записи в таблице. лучше его воспринимать как доменный объект.
а если нужно тебе ссылку формировать - то это уже начинается логика презентации модели и ее лучше формировать в viewmodel.

еще лучше логику формирования ссылки вынести в View .
...
Рейтинг: 0 / 0
Dapper - как изменить результаты при мапинге?
    #39200413
Фотография Sputnick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
monstrUSputnick,

а ты тут разделяй - доменная модель или view модель.
dapper тебе возвращает объект - аналог записи в таблице. лучше его воспринимать как доменный объект.
а если нужно тебе ссылку формировать - то это уже начинается логика презентации модели и ее лучше формировать в viewmodel.

еще лучше логику формирования ссылки вынести в View .

да, EventsForMain это доменная модель.
Ну ссылка это один из вариантов, хотелось бы чтобы на контроллер готовая модель шла, подготовленная в бизнес слое, а не готовить(приводить) данные к нужному виду в разных местах (бизнес слой и непосредственно сайт)

Вот подсказали такой вариант:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public class Event
        {
            public int Id { get; set; }
            public string Title { get; set; }
            public string Description { get; set; }
            public string Link 
            {
                get { return "http:\\site.\home\event\\" + this.Id; }
            }
        }



еще раз ссылка это просто пример и не самый лучший, я задал вопрос в принципе о вариантах реализации.
...
Рейтинг: 0 / 0
Dapper - как изменить результаты при мапинге?
    #39200428
monstrU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sputnick,

Так я и пишу, что в базе у тебя ссылка не храниться - у тебя храниться ссылка на event. сейчас тебе понадобилось правило
сформировать ссылку вида http:\\site.\home\event\\+ id event и отобразить на странице.

а если потом у тебя будет правило сформировать ссылку для sms http:\\mobile-site.\home\event\\ ? будешь для dapper а новый класс делать?

или третий вариант использования eventId случиться? так что размести правило формирования в View и не парь людям мозг. :)
я подозреваю что такая ситуация у тебя возникла из-за того, что ты объект для Dappera используешь в Veiw.
это плохая архитектура.
по большому счету domain model != viewmodel и view должно работать только с объектами viewmodel, а у тебя это не так
...
Рейтинг: 0 / 0
Dapper - как изменить результаты при мапинге?
    #39200435
Фотография Sputnick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
monstrUSputnick,
ты объект для Dappera используешь в Veiw.
это плохая архитектура.
по большому счету domain model != viewmodel и view должно работать только с объектами viewmodel, а у тебя это не так

да, до этого так и было, похоже настал момент юзать модели представления.

Спасибо за внятное объяснение.
...
Рейтинг: 0 / 0
Dapper - как изменить результаты при мапинге?
    #39200489
monstrU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sputnick,

вот :)
объект viewmodel по свойствам будет много повторять свойства domain модели - тут можно воспользоваться автомепперами типа automapper emitmapper.
последний правда версию framework выше чем 3.5 не имеет, то не очень хорошо
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Dapper - как изменить результаты при мапинге?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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