我需要有关映射实体的帮助。我要连接DAL和BL。我不知道如何映射集合。
DAL中的实体团队:
namespace ICSapp.DAL.Entities
{
public class Team : ICSappEntityBase
{
public string TeamName { get; set; }
public virtual ICollection<UserTeam> Members { get; set; }
public virtual ICollection<Post> Posts { get; set; }
}
同一个类在我的BLL模型中。
这是BLL映射器的代码:
namespace ICSapp.BL.Mapper
{
public static TeamModel MapTeamEntityToDTeamModel(Team entity)
{
return new TeamModel
{
Id = entity.Id,
TeamName = entity.TeamName,
// Members = entity.Members ??
// Posts = entity.Posts ??
};
}
public static Team MapTeamModelToTeamEntity(TeamModel model)
{
return new IngredientEntity
{
Id = model.Id,
TeamName = model.TeamName,
//Members = model.Members ??
// Posts = model Posts ??
};
}
}
那么如何映射集合? 谢谢
PS:我需要手动操作。
答案 0 :(得分:0)
public static TeamModel MapTeamEntityToDTeamModel(Team entity)
{
return new TeamModel
{
Id = entity.Id,
TeamName = entity.TeamName,
Members = entity.Members.Select(x => MapTeamUserEntityToTeamUserModel(x)).ToList()
};
}
public static TeamUserModel MapTeamUserEntityToTeamUserModel(TeamUser entity)
{
return new TeamUserModel
{
Id = entity.Id,
UserName = entity.UserName,
// etc. etc.
};
}
重复帖子。
不过,确实要投资使用Automapper。它可以自动完成所有操作,并且可以使用IQueryable
直接与EF基于ProjectTo<T>
的功能集成,以便可以在EF查询中直接投影ViewModel。手动方法效率不高,容易产生懒惰负载,并重新发明了本来就很圆的车轮。