zoukankan      html  css  js  c++  java
  • 一对多关系domain Model中设置使用AutoMapper时出错

          在使用AutoMapper时,把数据从VO—PO时显示如下错误,错误提示说在一对多关系中已将集合设置为EntityCollection,那么这个是为什么呢。

    image

         看下action中的代码,我们可以发现这是很常用的方法,

            [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中的代码。

        /// <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中将其实例化了一遍了,要是在转换就会显示不能成功。那么我就将其取消就可以了,

        /// <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; }
        }

    这样就可以了,原因就是我们之前说的那样。

  • 相关阅读:
    PHP的这些基础知识你应该熟知
    PHP版的猴子选大王算法
    Linux常用命令,面试常考
    PHP中常见的数字掐头去尾操作方法
    永久重定向301与临时重定向302区别
    WordPress子模板继承
    双系统引导设置
    OpenCv
    SpringBoot后端跨域问题
    存储式参数校验
  • 原文地址:https://www.cnblogs.com/netxiaohui/p/5717109.html
Copyright © 2011-2022 走看看