返回首页

[解决]如何优化代码自动映射:您好
所有

我想下面的代码使用手动映射的东西,而不是像AutoMapper。

我有两个表中的用户和角色,都与角色ID的映射。现在的问题是,如果我获得用户的记录,那么它将给我唯一的,而不是ROLENAME角色ID。于是,我就得到自定义类的结果,并与循环映射每个实体(手动)。任何人都可以帮助到本手册的代码自动优化?因为我有更多的关系15桌。

代码片段:

// M O D E L

public class RoleModel : IRoleModel

{

    public Guid RoleID { get; set; }

    public string RoleName { get; set; }

    public string Description { get; set; }

}

public class UserModel : IUserModel

{

    public Guid UserID { get; set; }

    public Guid RoleID { get; set; }

    public string UserName { get; set; }

}

public class UserRoleModel

{

    public Guid UserID { get; set; }

    public string UserName { get; set; }

    public string Description { get; set; }

    public Guid RoleID { get; set; }

    public string RoleName { get; set; }

}

// C O N T R O L L E R

public class UsersController : Controller

{

    private IUserService _UserService;

    public UsersController()

        : this(new UserService())

    {

    }

    public UsersController(IUserService UserService)

    {

        _UserService = UserService;

    }

    public ActionResult Index()

    {

        IList<UserRoleModel> users = _UserService.GetUsersWithRole();

        return View(users);

    }

    public ActionResult Create()

    {

        return View();

    }

}

// S E R V I C E

public class UserService : ServiceBase<IUserService, User>, IUserService

{

    private IUserRepository _UserRepository;

    public UserService()

        : this(new UserRepository())

    {

    }

    public UserService(IUserRepository UserRepository)

    {

        _UserRepository = UserRepository ?? new UserRepository();

    }

    public IList<UserRoleModel> GetUsersWithRole()

    {

        IList<User> users = _UserRepository.GetAll();

        IList<UserRoleModel> userswithrol = new List<UserRoleModel>();

        /* ---------------------------------------------

        I would like to use AUTO MAPPER instead of MANUAL MAPPING

        ------------------------------------------------  */

        foreach (User u in users)

        {

            UserRoleModel ur = new UserRoleModel();

            ur.UserID = u.UserID;

            ur.UserName = u.UserName;

            ur.Description = u.Description;

            ur.RoleID = u.RoleID.Value;

            ur.RoleName = u.Role.RoleName;

            userswithrol.Add(ur);

        }

        /*--------------------------------------------*/

        return userswithrol;

    }

    private IList<UserModel> GetAll()

    {

        IEnumerable<User> alliance;

        if (whereCondition != null)

            alliance = _UserRepository.GetAll(whereCondition);

        else

            alliance = _UserRepository.GetAll();

        UserListModel model = new UserListModel();

        model.UserList = new List<UserModel>();

        AutoMapper.Mapper.CreateMap<User, UserModel>().ForMember(dest => dest.UserID, opt => opt.MapFrom(src => src.UserID));

        model.UserList = AutoMapper.Mapper.Map(alliance, model.UserList);

        return model.UserList;

    }

}



任何答复,将不胜感激!
谢谢,
imdadhusen

回答