asp.net-mvc – 使用Automapper映射嵌套类
发布时间:2020-12-16 09:42:01 所属栏目:asp.Net 来源:网络整理
导读:我的项目中有3个级别的嵌套.像这样的东西: public class Assignment { public Element Element { get; set; } } public class Element { public Subject Subject { get; set; } } public class Subject { public int? Id { get; set; } public string Subje
我的项目中有3个级别的嵌套.像这样的东西:
public class Assignment { public Element Element { get; set; } } public class Element { public Subject Subject { get; set; } } public class Subject { public int? Id { get; set; } public string Subject_Title { get; set; } } 每个类中还有许多其他属性.数据库遵循相同的结构.现在我想将分配从数据库映射到视图模型. 我使用automapper编写的映射是第一次工作,但之后没有.因此,Subject的值在后续运行中为null,而Element的值在所有运行中都很好.问题仅限于主题. 任何人都可以指出我正确的方向并告诉我我做错了什么? Mapper.CreateMap<db_Subject,Subject>(); Mapper.CreateMap<db_element,Element>() .ForMember(dest => dest.Subject,opt => opt.MapFrom(src => src.db_Subject)); Mapper.CreateMap<db_assignment,Assignment>() .ForMember(dest => dest.Element,opt => opt.MapFrom(src => src.db_element)); 基本上,db_subject是db_element中的外键,类似地db_element是db_assignment中的外键.在视图模型中,列的名称在某些情况下是不同的. 解决方法
试试这个,
我假设您的数据库类如下所示. public class DB_Assignment { public DB_Element Db_Element { get; set; } } public class DB_Element { public DB_Subject Db_Subject { get; set; } } public class DB_Subject { public int? Db_Id { get; set; } public string Db_Subject_Title { get; set; } } 然后创建这样的映射 Mapper.CreateMap<DB_Subject,Subject>() .ForMember(destination => destination.Id,options => options.MapFrom(source => source.Db_Id)) .ForMember(destination => destination.Subject_Title,options => options.MapFrom(source => source.Db_Subject_Title)) .ReverseMap(); Mapper.CreateMap<DB_Element,Element>() .ForMember(destination => destination.Subject,options => options.MapFrom(source => source.Db_Subject)) .ReverseMap(); Mapper.CreateMap<DB_Assignment,Assignment>() .ForMember(destination => destination.Element,options => options.MapFrom(source => source.Db_Element)) .ReverseMap(); 使用如下 var db_Assignment_1 = new DB_Assignment { Db_Element = new DB_Element { Db_Subject = null } }; var assignment_1 = MappingEngine.Map<DB_Assignment,Assignment>(db_Assignment_1); var db_Assignment_2 = new DB_Assignment { Db_Element = new DB_Element { Db_Subject = new DB_Subject { Db_Id = 1,Db_Subject_Title = "Some title" } } }; var assignment_2 = MappingEngine.Map<DB_Assignment,Assignment>(db_Assignment_2); var db_Assignment_Lst = new List<DB_Assignment> { db_Assignment_1,db_Assignment_2 }; var assignment_Lst = MappingEngine.Map<List<DB_Assignment>,List<Assignment>>(db_Assignment_Lst); 对我来说很好. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 如何在Asp.Net Web API 2中使用Owin OAuth2修改令牌端点响应
- dependency-injection – 如何使用ASP.NET MVC 3 RTM配置依
- ASP.NET MVC 4 AJAX提交表单不工作
- 实验五:ASP+MSSQL的web搭建
- asp.net – Kendo TabStrip:将动作渲染到MVC 4中的选项卡
- ASP.NET命名空间
- .net – 强制从/ bin加载汇编,而不是GAC?
- asp.net – 如何在JQuery的验证中本地化验证消息?
- asp.net – “无法启动IIS Express Web服务器”错误
- asp.net-mvc – 错误获取记录“LINQ to Entities无法识别方
推荐文章
站长推荐
- asp.net-mvc – Kendo UI Grid ASP.NET MVC Wrap
- asp.net – 在.NET Core 1.0 MVC中的视图中使用授
- 在ASP.NET web.config全球标记中设置日期格式?
- asp.net-mvc-3 – 为什么asp.net mvc模型绑定器生
- asp.net-mvc-5 – 同一域中的Web API 2项目和MVC
- Asp.Net Identity发现用户不在角色中
- 有没有带语音记录示例代码的ASP.NET?
- asp.net-mvc-routing – 如何在MapHttpRoute中设
- asp.net-mvc – 如何进入MVC4源代码,而无需构建程
- 如何使用ASP.NET MVC引用CSS样式?
热点阅读