如何以可重用的方式映射子实体?

时间:2016-10-24 14:20:19

标签: c# entity-framework

我需要将EF实体映射到更适合执行业务逻辑操作的实体。为此,我使用这个表达式:

var phoneMapper = phone => new BasePhone
{
    Id = phone.Id,
    Number = phone.Number,
    PhoneType = phoneTypeMapper(phone.PhoneType) //Pseudo-Code
}

在此示例中,手机类型类应具有自己的映射:

var phoneTypeMapper = phoneType => new BasePhoneType
{
    Id = phoneType.Id,
    Name = phoneType.Name
}

我想在phoneTypeMapper的定义中使用phoneMapper,我该怎么办?我知道这很容易用于收藏:

var phoneMapper = phone => new BasePhone
{
    Id = phoneType.Id,
    Name = phoneType.Name,
    //Now a phone has many phone types
    PhoneTypes = phone.PhoneTypes.Select(phoneTypeMapper)
}

有没有办法为非可枚举的属性执行此操作?

修改

我还应该提一下,我希望在父查询折叠之前不要折叠查询。 I.E.我想把它堵塞到一个选择中,并且每次需要提取记录状态数据时都没有它到达数据库。

0 个答案:

没有答案