是否有一种方法可以使用自动映射器从列表映射到标量属性?

问题描述 投票:1回答:1

在我的业务层中,有以下对象

class ParentClass
{
    // Parent class properties
    ChildClass PrimaryChild { get; set; }
    ChildClass SecondaryClass { get; set; }
}

class ChildClass
{
    //Child class properties
}

业务规则规定将只有一个主要和次要孩子

在DAL中,尽管将其设置为标准的一对多关系很有意义

class ParentEntity
{
    // Parent properties
    IEnumerable<ChildEntity> Children { get; set; }
}

class ChildEntity
{
    // Child properties

    bool IsPrimary { get; set; }

    int ParentId { get; set; }
    ParentEntity Parent { get; set; }
}

这对数据库都很好,并且在业务规则确实发生更改的情况下提供了将来的灵活性。

这一切都很好,但是我发现自己在业务层中手动映射PrimaryChildSecondaryChild属性,而其他所有内容都由自动映射器映射。

是否有一种方法可以指示自动映射器进行这种映射?我没有运气来找到遵循此结构的示例。

c# .net-core automapper
1个回答
2
投票

据我所知,这不能隐式完成。

即使存在隐式执行此功能的能力,它也需要您明确指出:

  • 应映射到列表中的属性
  • IsPrimary标志如何根据其是哪个属性而设置
  • ((双向绑定)哪个列表元素应该映射到哪个属性

一旦您已经准备好编写这些自定义的逻辑点,基本上就已经重写了整个手动映射,并且除了执行手动编写的步骤之外,框架实际上不会做很多其他事情。

会有很多代码并没有真正增加库功能的价值。

© www.soinside.com 2019 - 2024. All rights reserved.