c# - 有没有办法使用 Automapper 进行映射
问题描述
即使使用 Automapper 映射到中的TeacherSubjects
列表始终显示 null 。TeacherVM
SubjectVM
TeacherSubject
我已经使用自动映射器配置尝试了下面的代码。SchoolName
正在通过但TeacherSubjectlist
始终为空。
public class Teacher
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string PhoneNumber { get; set; }
public string Address { get; set; }
public School WorkingSchool { get; set; }
public int SchoolId { get; set; }
public List<TeacherSubject> TeacherSubjectslist { get; set; }
}
public class TeacherSubject
{
public int TeacherSubjectId { get; set; }
public Subject Subject { get; set; }
public int SubjectId { get; set; }
public Teacher Teacher { get; set; }
public int TeacherId { get; set; }
}
public class TeacherVM
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string PhoneNumber { get; set; }
public string Address { get; set; }
public int SchoolId { get; set; }
public string SchoolName { get; set; }
public List<SubjectVM> TeacherSubjects { get; set; }
}
public class SubjectVM
{
public string SubjectName { get; set; }
public int SubjectId { get; set; }
}
CreateMap<domain.TeacherSubject, SubjectVM>()
.ForMember(dest => dest.SubjectName, opt => opt.MapFrom(src =>
src.Subject.SubjectName))
.ForMember(dest => dest.SubjectId, opt => opt.MapFrom(src =>
src.Subject.SubjectId));
CreateMap<domain.Teacher, TeacherVM>()
.ForMember(dest => dest.SchoolName, opt => opt.MapFrom(src =>
src.WorkingSchool.SchoolName))
.ForMember(dest => dest.TeacherSubjects, opt => opt.MapFrom(src
=> src.TeacherSubjectslist));
TeacherSubjectlist
应该是the SubjectId
和SubjectName
属性的列表。
解决方案
问题是您缺少在包含对象列表的每个类中创建列表类型的实例。
您需要做的是在类构造函数中添加列表类型的实例。
未经测试,例如:
public Teacher()
{
TeacherSubjectslist = new List<TeacherSubject>();
..
..
相同的概念对具有对象列表的其余类有效。
推荐阅读
- javascript - React 类构造方法如何查看尚未定义的绑定属性?
- mysql - 在某些设置文本之后创建和使用 SQL 变量
- python - 蝗虫如何使用 docker-compose 并获得汇总结果
- javascript - 尝试导入错误:“firebase/app”不包含默认导出(导入为“firebase”)
- nuget-package - 仅提供 .cs 源的 NUGET 包可以从“SDK 样式”csproj 项目中使用,例如 .NET5+
- atlassian-sourcetree - SourceTree 3.4.6 是否支持 Git 流?
- react-native - 如何正确记录 React Native 组件的 Props 参数
- php - 为什么 Symfony Monolog 发送错误额外邮件
- npm - 尝试构建 npm 失败
- javascript - 在使用 jsps 时添加对评论部分的回复