Size: a a a

var chat = new Chat();

2020 March 13

B

Bretbas in var chat = new Chat();
Народ, кто использует ProjectTo<TDestination> из AutoMapper?

Блин, столкнулся с проблемой, что когда в мапе определяешь вот эту конфигурацию маппинга для свойства:
.ForMember(dest => dest.Comments, opt => opt.MapFrom(src => src.Comments.Take(3)));

То происходит исключение:
MySql.Data.MySqlClient.MySqlException (0x80004005): Unknown column 't.Text' in 'field list'

Тоесть не удается собрать правильный SQL запрос.
Хотя, если я использую другие методы:
Для фильтрации:
.ForMember(dest => dest.Comments, opt => opt.MapFrom(src => src.Comments.Where(x => x.Id != 2)));

Для сортировки:
.ForMember(dest => dest.Comments, opt => opt.MapFrom(src => src.Comments.OrderByDescending(x => x.Id)));

то все транслируется нормально!

Может кто сталкивался с подобным?
источник

A

Andrew in var chat = new Chat();
Bretbas
Народ, кто использует ProjectTo<TDestination> из AutoMapper?

Блин, столкнулся с проблемой, что когда в мапе определяешь вот эту конфигурацию маппинга для свойства:
.ForMember(dest => dest.Comments, opt => opt.MapFrom(src => src.Comments.Take(3)));

То происходит исключение:
MySql.Data.MySqlClient.MySqlException (0x80004005): Unknown column 't.Text' in 'field list'

Тоесть не удается собрать правильный SQL запрос.
Хотя, если я использую другие методы:
Для фильтрации:
.ForMember(dest => dest.Comments, opt => opt.MapFrom(src => src.Comments.Where(x => x.Id != 2)));

Для сортировки:
.ForMember(dest => dest.Comments, opt => opt.MapFrom(src => src.Comments.OrderByDescending(x => x.Id)));

то все транслируется нормально!

Может кто сталкивался с подобным?
Не сталкивался, но ИМХО автомаппер злейшее зло, так как кучу магии приносит в проект, а по сути проблем не решает
источник

OD

Oleksandr Desiatnyk in var chat = new Chat();
Andrew
Не сталкивался, но ИМХО автомаппер злейшее зло, так как кучу магии приносит в проект, а по сути проблем не решает
альтернативы?
источник

B

Bretbas in var chat = new Chat();
Andrew
Не сталкивался, но ИМХО автомаппер злейшее зло, так как кучу магии приносит в проект, а по сути проблем не решает
никакой магии нет, все это отслеживаемо
источник

B

Bretbas in var chat = new Chat();
но в данном случае, какой-то баг
источник

B

Bretbas in var chat = new Chat();
не пойму, толи поставщик БД тупит, толи AutoMapper
источник

A

Andrew in var chat = new Chat();
Oleksandr Desiatnyk
альтернативы?
Обычный маппинг руками.
Один метод с маппингом ничуть не больше файлы с конфигурирационным профилем  для автомаппера
источник

vl

vova lantsov in var chat = new Chat();
Andrew
Обычный маппинг руками.
Один метод с маппингом ничуть не больше файлы с конфигурирационным профилем  для автомаппера
тут не соглашусь, зависит от классов. если 20+ свойств и половина имеет аналогичный тип/имя то конфиг автомаппера будет короче раза в 2, тут зависит уже от классов непосредственно
источник

B

Bretbas in var chat = new Chat();
блин, помогите с проблемой плиз
источник

vl

vova lantsov in var chat = new Chat();
Bretbas
блин, помогите с проблемой плиз
Если бы кто-то знал то помогли бы
источник

B

Bretbas in var chat = new Chat();
vova lantsov
Если бы кто-то знал то помогли бы
какая то слишком неочевидная проблема
источник

B

Bretbas in var chat = new Chat();
толи баг в провайдере БД
источник

B

Bretbas in var chat = new Chat();
потому что остальные операторы нормально транслируются в SQL
источник

B

Bretbas in var chat = new Chat();
.ForMember(dest => dest.Comments, opt => opt.MapFrom(src => src.Comments.OrderByDescending(x => x.Id)));
источник

B

Bretbas in var chat = new Chat();
вот к примеру
источник

B

Bretbas in var chat = new Chat();
все норм
источник

B

Bretbas in var chat = new Chat();
А это уже не работает
.ForMember(dest => dest.Comments, opt => opt.MapFrom(src => src.Comments.Take(3)));
источник

B

Bretbas in var chat = new Chat();
пробовал и TakeLast(3), на него другую ошибку пишет
источник

ВО

Влад Ого in var chat = new Chat();
сделай туЛист и уже потом тейк)
источник

OD

Oleksandr Desiatnyk in var chat = new Chat();
попробуй
.OrderByDescending(x => x.Id).Take(3)
или
.Skip(0).Take(3)
или
.OrderByDescending(x => x.Id).Skip(0).Take(3)
источник