Полный пример в Консольном приложении суть
У меня есть объекты с вычисляемым свойством только для чтения.
Это моя конфигурация сопоставления Automapper для расчета свойства.
cfg.CreateMap(t, t).ForMember(nameof(ITestInterface.IsReadOnly), opt => opt.MapFrom(src => ((ITestInterface)src).OrganizationUnitId == ((ITestInterface)src).TenantId));
И это простой запрос, который выдает исключение
var simpleQuery = from super in context.SuperEntities.AsQueryable().ProjectTo<SuperEntity>()
join other in context.OtherSuperEntities.AsQueryable().ProjectTo<OtherSuperEntity>() on super.Id equals other.SuperEntityId
select new { super.IsReadOnly, other.OtherSuperDescription };
var simpleResult = simpleQuery.ToList();
У меня InvalidOperationException: Исключение при чтении значения из базы данных для свойства OtherSuperEntity.Id. Ожидаемый тип - System.Int64, но фактическое значение - System.Boolean.
Это проблема автомаппера? Просто закрыли мой проблема
Попробуйте переместить context.OtherSuperEntities.AsQueryable().ProjectTo<OtherSuperEntity>() в переменной за пределы дерева выражения запроса.
Я использую общий шаблон репозитория, и я хочу скрыть и автоматизировать функции ProjectTo, чтобы я не мог вызвать его в конце запроса linq





Попробуйте написать свой запрос только с использованием EF, а затем спроецировать только результат с помощью AM.