一对多关系domain Model中设置使用AutoMapper时出错
在使用AutoMapper时,把数据从VO—PO时显示如下错误,错误提示说在一对多关系中已将集合设置为EntityCollection,那么这个是为什么呢。
看下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; }
}
这样就可以了,原因就是我们之前说的那样。
作者:阿辉
关注我:微信扫描下面二维码,关注后6T编程资料免费送。
微信公众号:Andy阿辉


写一些程序员的所思所想,希望对你有帮助。
版权声明:本文版权归作者和博客园共有,欢迎转载,
但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.


浙公网安备 33010602011771号