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

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

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


679140-20160729092200544-897794545.png


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



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


目录
相关文章
|
6月前
|
存储 SQL BI
【Entity Framework】你知道如何处理无键实体吗
【Entity Framework】你知道如何处理无键实体吗
42 0
|
JSON Java 数据库
代码重构实战-将值对象改为引用对象(Change Value to Reference)
一个数据结构中可能包含多个记录,而这些记录都关联到同一个逻辑数据结构。例如,我可能会读取一系列订单数据,其中有多条订单属于同一个顾客。遇到这样的共享关系,既能将顾客信息作为值对象看待,也能将其视为引用对象
110 0
|
测试技术 数据库
Grails里DOMAIN类的一对一,一对多,多对多关系总结及集成测试
终于干完这一章节,收获很多啊。 和DJANGO有类似,也有不同。 User.groovy: package com.grailsinaction class User { String loginId String password Date dat...
1268 0
|
数据库
EF Core如何处理多对多关系
EF Core如何处理多对多关系
242 0
重构——21将引用对象改为值对象(Change Reference to Value)
将引用对象改为值对象(Change Reference to Value):你有一个引用对象,很小且不可改变,而且不容易管理;将它变为一个值对象
1426 0
重构——20将值对象改为引用对象(Change Value to Reference)
将值对象改为引用对象(Change Value to Reference):你从一个类衍生出许多彼此相等的实例,希望将它们替换为同一对象;将这个值对象变成引用对象
1378 0
重构——25将双向关联改为单向关联(Change Bidirectional Association to Unidirectional)
将双向关联改为单向关联(Change Bidirectional Association to Unidirectional):两个类之间有双向关联,但其中一个类如今不再需要另一个类的特性;去掉不必要的关联
1793 0
重构——24将单项关联改为双向关联(Change Unidirectional Association to Bidirectional)
将单项关联改为双向关联(Change Unidirectional Association to Bidirectional):两个类都需要对方特性,但其间只有一条单向连接;添加一个反向连接,并使修改函数能够同时更新两条连接
1423 0
|
前端开发 API JavaScript
WebApi 中FromUri参数自动解析成实体的要求
条件一:类属性名称必须和参数名称相同(不分大小写) 条件二:API参数必须以[FromUri]来修饰(数组也需要添加,否则参数传递不了) 条件三:属性类型为“类”的,如果使用类名(导航属性在本类的名称,可以不是类的原名).
1312 0