一对多关系domain Model中设置使用AutoMapper时出错

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

image

     看下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; }
}

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

posted @   —阿辉  阅读(649)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示