【发布时间】:2018-11-12 06:53:54
【问题描述】:
我有一个使用 Fluent NHibernate 和 AutoMapper 从数据库加载到 DTO 的对象图:-
public class Foo
{
public int Id { get; set; }
public virtual ICollection<Bar> Bars { get; set; }
public bool SortBarByName
}
public class Bar
{
public int Id { get; set; }
public int SortOrder { get; set; }
public virtual Foo Foo { get; set; }
}
我的映射看起来像:-
public class FooDto
{
public IEnumerable<BarDto> Bars { get; set; }
}
public class BarDto
{
public string Name { get; set; }
public int SortOrder { get; set; }
}
我的映射如下:
mapper.CreateMap<Foo, FooDto>().ForMember(d => d.Bars, o => o.MapFrom(s => s.Bars));
mapper.CreateMap<Bar, BarDto>();
当我返回 FooDto 时,我希望根据以下条件对 BarDto 的集合进行排序。 如果 SortBarByName 为真,我想按名称对 BarDto 进行排序,如果 SortBarByName 为假,我想按 SortOrder 排序,基于类 Foo 的 SortBarByName 属性。
注意: Name 属性不存在于 Bar 类中,仅存在于 BarDto 中。
我可以在 AutoMappers 中做些什么来实现这一点吗?
【问题讨论】:
-
您是否尝试过使用
ForMember()来根据需要映射bar属性?你可以在那里应用你的排序。 -
您的
Bar对象中也有SortOrder属性吗? -
@RedFox 是的,SortOrder 存在于 Bar 对象中,但 Name 不在 Bar 对象中。请查看我的编辑。
标签: c# sorting nhibernate fluent-nhibernate automapper