public class GebruikerModel
{
public String Gebruikersnaam { get; set; }
public String Wachtwoord { get; set; }
public String FaculteitModelNaam { get; set; }
public String InstellingModelMNaam { get; set; }
}
public class FaculteitModel
{
public String Naam { get; set; }
}
public class InstellingModel
{
public String naam { get; set; }
}
用户(Gebruiker)存储在数据库中,如下所示:
int id; (PK)
String name
int FaculteitId
int InstellingId
教师(faculteit)和学校(instelling)如下:
int id; (PK)
String name;
编辑:使用Linq to SQL创建域模型。
显然,我的观点中不需要任何ID。所以我正在尝试使用automapper:
GebruikerModel singleUser = Mapper.Map<Gebruiker, GebruikerModel>(db.Gebruikers.FirstOrDefault());
并获取错误:(目标成员列表)\ r \ n \ r \ n未映射的属性:\ r \ nFaculteitModelNaam \ r \ nInstellingModelMNaam \ r \ n“} AutoMapper.AutoMapperConfigurationException
如何配置automapper以从教师和学校获取名称以将其映射到我的viewmodel?
答案 0 :(得分:1)
我的代码不清楚。我在这里给出一个可以帮助你的例子。
<强>型号1 强>
public class class1
{
public string ID1 { get; set; }
public string Name1 { get; set; }
}
<强>模型2 强>
public class class2
{
public int ID2 { get; set; }
public string Name2 { get; set; }
}
请注意,ID1和ID2具有不同的数据类型。现在,如果你想将class2映射到class1,你的配置将是这样的。
您的配置和映射:
class2 c2 = new class2 { ID2 = 1, Name2 = "Test" };
Mapper.Initialize(cfg =>
{
cfg.CreateMap<class2, class1>()
.ForMember(dest => dest.ID1, opts => opts.MapFrom(src => src.ID2.ToString()))
.ForMember(dest => dest.Name1, opts => opts.MapFrom(src => src.Name2));
});
var data = Mapper.Map<class1>(c2);
或者,如果属性名称是&#39;名称&#39;在两个型号中,您的配置都将是。
Mapper.Initialize(cfg =>
{
cfg.CreateMap<class2, class1>()
.ForMember(dest => dest.ID1, opts => opts.MapFrom(src => src.ID2.ToString()));
});
注意:在这种情况下,反向映射无法使用.Reverse()方法,您必须通过正确转换来反转源和目标来创建新配置。