Расширение AutoMapper IQueryable выдает сообщение «Невозможно сравнить элементы типа » сC#

Место общения программистов C#
Ответить
Anonymous
 Расширение AutoMapper IQueryable выдает сообщение «Невозможно сравнить элементы типа » с

Сообщение Anonymous »

Проект().To().SingleOrDefault() AutoMapper IQueryable Extension выдает это исключение:


Невозможно сравнить элементы типа App.Domain.MyComplexType. Поддерживаются только примитивные типы,
типы перечислений и типы сущностей.


У меня есть эта модель:

Код: Выделить всё

public class MyEntityType  // this is an entity type on the dbContext
{
public int Id {get;set;
public MyComplexType MyComplexType {get;set;}
}

public class MyComplexType // this is a complex type
{
public decimal Property1 { get; set;}
public string Property2 { get;set;}
}

public class ViewModel
{
public int Id { get;set;}
public decimal MyComplexTypeProperty1 { get;set;}
}
Я использую AutoMapper для настройки сопоставления IQueryable с ViewModel:

Код: Выделить всё

Mapper.CreateMap(); // I rely on AutoMapper's
//convention for flattening `source.MyComplexType.Property1` to `dest.MyComplexTypeProperty1'
Затем я пытаюсь получить один элемент следующим образом:

Код: Выделить всё

var myItem = myContext.Where(x => x.Id == id).Project().To().SingleOrDefault();
Я получаю вышеуказанное исключение при вызове SingleOrDefault(), так что, очевидно,

В настоящее время я обойдите эту проблему, сначала вызвав SingleOrDefault(), а затем выполнив сопоставление, это работает:

Код: Выделить всё

var myItem = Mapper.Map(myContext.Find(id));
В других сообщениях в основном говорится, что ошибка, указанная выше, возникает при попытке сравнить сложный тип EF с нулевым значением, как, например, в предложении Where, но это здесь, видимо, не тот случай.

Подробнее здесь: https://stackoverflow.com/questions/301 ... pe-complex
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»