一对多关系domain Model中设置使用AutoMapper时出错
在使用AutoMapper时,把数据从VO—PO时显示如下错误,错误提示说在一对多关系中已将集合设置为EntityCollection,那么这个是为什么呢。
看下action中的代码,我们可以发现这是很常用的方法,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | [HttpPost, ActionName( "Create" )] public ActionResult CreatePost(CreateResponseTextMessageView model) { if (ModelState.IsValid) { try { model.CreateTime = DateTime.Now.ToLocalTime(); var entity = Mapper.Map<ResponseTextMessage>(model); _unitOfWork.ResponseTextMessageRepository. Insert (entity); _unitOfWork.Save(); } catch (Exception ex) { ErrorNotification(ex.Message); //throw new Exception(ex.Message); } SuccessNotification( "添加成功" ); return RedirectToAction( "Index" ); } return View (model); } |
通过AutoMapper将VO—PO保存到数据库中,可是为什么会出现错误了,之前报的错误是说在Mapper转换的时候问题,这个好解决,把其对应的转换给添加上,现在这个没有头绪了,下面是之前的domain中的代码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | /// <summary> /// 响应的文本消息 /// </summary> public class ResponseTextMessage : BaseEntity { public ResponseTextMessage() { this.RequestMessage = new Collection<RequestMessage>(); } /// <summary> /// 文本内容 /// </summary> public virtual string Content { get; set ; } /// <summary> /// 响应消息分类 /// </summary> public virtual ResponseMsgType ResponseMsgType { get; set ; } /// <summary> /// 一对多属性配置 ----相当于导航属性 /// </summary> public virtual ICollection<RequestMessage> RequestMessage { get; set ; } } |
仔细看它是说在基类中出错,那么我们就把基类打开,发现这里我已经在ctor中将其实例化了一遍了,要是在转换就会显示不能成功。那么我就将其取消就可以了,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | /// <summary> /// 响应的文本消息 /// </summary> public class ResponseTextMessage : BaseEntity { public ResponseTextMessage() { // this.RequestMessage = new Collection<RequestMessage>(); } /// <summary> /// 文本内容 /// </summary> public virtual string Content { get; set ; } /// <summary> /// 响应消息分类 /// </summary> public virtual ResponseMsgType ResponseMsgType { get; set ; } /// <summary> /// 一对多属性配置 ----相当于导航属性 /// </summary> public virtual ICollection<RequestMessage> RequestMessage { get; set ; } } |
这样就可以了,原因就是我们之前说的那样。
作者:阿辉
关注我:微信扫描下面二维码,关注后6T编程资料免费送。
微信公众号:Andy阿辉


写一些程序员的所思所想,希望对你有帮助。
版权声明:本文版权归作者和博客园共有,欢迎转载,
但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步