Проблема Automapper: исключение рекурсивной проекции LinqToSql StackoverflowC#

Место общения программистов C#
Ответить
Anonymous
 Проблема Automapper: исключение рекурсивной проекции LinqToSql Stackoverflow

Сообщение Anonymous »


Изображение


Используя приведенное выше Классы сущностей LinqToSql и попытка сопоставления с объектами DTO с одинаковыми именами вызывают исключение Stackoverflow. Я прочитал, и, похоже, это проблема с отношениями Child/Parent с объектом CriteriaGroup. Есть ли у кого-нибудь предложения?

Код, используемый для этого вызова:

var mappedDtos = this.configurationRepository
.GetAll()
.Project()
.To();


Где находится GetAll():

public override IQueryable GetAll()
{
return this.Table.AsQueryable();
}


Код сопоставления, который я создал для этого:

///
/// The criteria profile.
///
public class CriteriaProfile : Profile
{
///
/// The configure.
///
protected override void Configure()
{
Mapper.CreateMap()
.ForMember(dest => dest.Groups, opt => opt.MapFrom(src => src.Children))
.ForMember(dest => dest.Parent, opt => opt.MapFrom(src => src.Parent))
.ForMember(dest => dest.Criteria, opt => opt.MapFrom(src => src.CriteriaConfigs));

Mapper.CreateMap()
.Include()
.Include()
.Include()
.ForMember(dest => dest.DefaultValue, opt => opt.UseValue(default(object)))
.ForMember(dest => dest.DataType, opt => opt.Ignore())
.ForMember(dest => dest.ElementId, opt => opt.MapFrom(src => src.Id))
.ForMember(dest => dest.Options, opt => opt.Ignore());

Mapper.CreateMap()
.ForMember(dest => dest.JoinOperators, opt => opt.MapFrom(src => src.JoinOperators))
.ForMember(dest => dest.OptionOperators, opt => opt.MapFrom(src => src.Operators));

Mapper.CreateMap()
.ForMember(dest => dest.JoinOperators, opt => opt.MapFrom(src => src.JoinOperators))
.ForMember(dest => dest.OptionOperators, opt => opt.MapFrom(src => src.Operators));

Mapper.CreateMap()
.ForMember(dest => dest.JoinOperators, opt => opt.MapFrom(src => src.JoinOperators))
.ForMember(dest => dest.OptionOperators, opt => opt.MapFrom(src => src.Operators));

base.Configure();
}
}


При этом дополнительные сопоставления в производных классах обусловлены: (EG)

///
/// The rating config.
///
public partial class RatingConfig
{
///
/// Gets the operators.
///
public IEnumerable Operators
{
get
{
return Enumeration.GetAll();
}
}

///
/// Gets the join operators.
///
public IEnumerable JoinOperators
{
get
{
return Enumeration.GetAll();
}
}
}


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

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

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

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

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

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