【发布时间】:2016-11-04 18:25:42
【问题描述】:
下面要转换的函数是automapper
public ActionResult Index()
{
Func<int,string> _roleName=t=>{return new RolesDAO().getROLEsByID(t).ROLE_NAME; };
Func<int,string> _STATENAME=t=>{return new StateDAO().getStatesByID(t).STATENAME; };
Func<int,string> _COUNTRYNAME=t=>{return new CountryDAO().getCountrieByID(t).COUNTRYNAME; };
//Func<int,string> _TYPE_NAME=t=>{return new UsersTypeDAO().getUsersTypeByID(t).TYPE_NAME; };
string usertypeName = string.Empty;
string RoleName = string.Empty;
string StateName = string.Empty;
string CountryName = string.Empty;
var value = objDAO.getUsers().Select(t => new UsersVM
{
ACTIVE=t.ACTIVE,
ROLENAME=_roleName(t.ROLEID),
PROFILE_IMAGE=t.PROFILE_IMAGE,
STATEName = _STATENAME(t.STATE),
COUNTRYName = _COUNTRYNAME(t.COUNTRY),
MOBILE=t.MOBILE,
FNAME=t.FNAME,
LNAME=t.LNAME,
EMAIL=t.EMAIL,
CITY=t.CITY,
USERTYPENAME = _TypeName(t.USER_TYPE_ID),
ADDRESS=t.ADDRESS,
}).ToList();
return View("list", value);
}
我使用自动映射器函数调用成员但没有成功,我什至无法使用断点进行调试。请建议如何将此对象转换为另一个对象。我查看了许多博客文章,但无法将其与我的问题联系起来。
我只想使用自动映射器进行此转换,而不是创建匿名类型并在其中使用函数。
我尝试使用 .forMember 函数,但它无法为转换后的属性返回 null。这是我的个人资料类:
public class UsersDM_TO_VM : Profile
{
public UsersDM_TO_VM()
{
Func<int,string> _roleName=t=>{return new RolesDAO().getROLEsByID(t).ROLE_NAME; };
Func<int,string> _STATENAME=t=>{return new StateDAO().getStatesByID(t).STATENAME; };
Func<int,string> _COUNTRYNAME=t=>{return new CountryDAO().getCountrieByID(t).COUNTRYNAME; };
Func<int,string> _TYPE_NAME=t=>{return new UsersTypeDAO().getUsersTypeByID(t).TYPE_NAME; };
CreateMap<STBL_ADMINUSERS, UsersVM>()
.ForMember(
a => a.STATEName,
b => b.MapFrom(c => _STATENAME(c.STATE)))
.ForMember(
d => d.ROLENAME,
e => e.MapFrom(f => _roleName(f.STATE)))
.ForMember(
g => g.COUNTRYName,
h => h.MapFrom(i => _COUNTRYNAME(i.STATE)))
.ForMember(
j => j.USERTYPENAME,
k => k.MapFrom(l => _TYPE_NAME(l.STATE)));
}
}
但是,它没有给出任何错误,而是给出了意外的结果。自定义类型转换器也没有成功。
public class CustomUserConverter : ITypeConverter<STBL_ADMINUSERS, UsersVM>
{
Func<int, string> _roleName = t => { return new RolesDAO().getROLEsByID(t).ROLE_NAME; };
Func<int, string> _STATENAME = t => { return new StateDAO().getStatesByID(t).STATENAME; };
Func<int, string> _COUNTRYNAME = t => { return new CountryDAO().getCountrieByID(t).COUNTRYNAME; };
Func<int, string> _TYPE_NAME = t => { return new UsersTypeDAO().getUsersTypeByID(t).TYPE_NAME; };
public UsersVM Convert(STBL_ADMINUSERS s, ResolutionContext c)
{
UsersVM t = new UsersVM();
t.ROLENAME = _roleName(s.ROLEID);
t.COUNTRYName = _COUNTRYNAME(s.COUNTRY);
t.STATEName = _STATENAME(s.STATE);
t.USERTYPENAME = _TYPE_NAME(s.USER_TYPE_ID);
return t;
}
}
【问题讨论】:
标签: c# asp.net-mvc automapper