Как отобразить объекты из DAL в BL - PullRequest
0 голосов
/ 04 апреля 2019

Мне нужна помощь с отображением объектов.Я хочу соединить DAL и BL.Я не знаю, как отобразить коллекцию.

Entity Team в 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: мне нужно сделать это вручную.

1 Ответ

0 голосов
/ 04 апреля 2019
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>, так что он может проецировать ваши ViewModels напрямую в запросы EF.Ручной подход не так эффективен, подвержен ленивым ударам и заново изобретает и без того хорошо округлое колесо.

...