C# 使用AutoMapper更新父项并插入子项Telerik Opn访问权限

C# 使用AutoMapper更新父项并插入子项Telerik Opn访问权限,c#,asp.net-mvc,asp.net-mvc-5,automapper,telerik-open-access,C#,Asp.net Mvc,Asp.net Mvc 5,Automapper,Telerik Open Access,我正在使用Telerik Open Access进行数据库操作。我有一个名为Order的父类,它包括两个名为OrderHistory和Tasks的类。现在,任何类型的事件都会发生,例如,如果订单被挂起或发送,它的相关条目将被放在OrderHistory表中,订单表将被更新。现在我已经完成了以下代码,但它有时有效,有时无效。我对telerik开放存取和automapper了解不多 控制器呼叫: OrderDTO updateorder = orderManagement.GetOrdersByOr

我正在使用Telerik Open Access进行数据库操作。我有一个名为Order的父类,它包括两个名为OrderHistory和Tasks的类。现在,任何类型的事件都会发生,例如,如果订单被挂起或发送,它的相关条目将被放在OrderHistory表中,订单表将被更新。现在我已经完成了以下代码,但它有时有效,有时无效。我对telerik开放存取和automapper了解不多

控制器呼叫:

OrderDTO updateorder = orderManagement.GetOrdersByOrderId(2);
updateorder.QueueId = 3;
updateorder.IsLocked = false;
updateorder.UpdatedBy = Convert.ToInt32(Session["UserId"], CultureInfo.CurrentCulture);
updateorder.UpdatedDate = DateTime.Now;
OrderHistoryDTO alertDto = new OrderHistoryDTO()
{
    Event = 'Putting On Hold',
    OrderID = orderDTO.Id
    UserID = Convert.ToInt32(Session["UserId"], CultureInfo.CurrentCulture),
    OccuerdDate = DateTime.Now,
    EventType = 'Event'
};
updateorder.OrderHistories.Clear();
updateorder.OrderHistories.Add(alertDto);
updateorder = orderManagement.UpdateOrder(updateorder);
数据库操作

public OrderDTO UpdateOrder(OrderDTO orderEntity)
{
    AutoMapper.Mapper.CreateMap<OrderDTO, Order>()
    .ForMember(d => d.Tasks, m => m.Ignore())
    .ForMember(d => d.OrderHistories, m => m.MapFrom(s => s.OrderHistories));
    AutoMapper.Mapper.CreateMap<OrderHistoryDTO, OrderHistory>();    
    var orderBase = AutoMapper.Mapper.Map<Order>(orderEntity);  // It will sometimes make OrderHistories list count to 0. though in starting orderEntity has OrderHistories count = 1.
    base.Update(orderBase);
    base.Save();
    orderEntity = AutoMapper.Mapper.Map<OrderDTO>(orderBase);
    return orderEntity;
}

有时有效,但有时无效
-你是什么意思?@rhughes有时'ar orderBase=AutoMapper.Mapper.Map(orderEntity);'行将orderhistories列表设置为0,尽管存在数据。@Dhwani,我使用数据库中的一些随机数据测试了您的代码,但没有重现您描述的问题。如果您发现与Telerik数据访问(以前称为Telerik OpenAccess ORM)相关的问题,我建议您在此论坛上发布您的问题:@DoroteyaAgayna ok。我仍然面临同样的问题。所以我想现在我必须把它放到论坛上。谢谢
public class OrderDTO
{
  public int OrderID { get; set; }
  public bool? IsLocked { get; set; }
  public int QueueId { get; set; }
  [ScriptIgnore]
  private IList<OrderHistoryDTO> _orderHistories = new   List<OrderHistoryDTO>();
  [ScriptIgnore]
  public virtual IList<OrderHistoryDTO> OrderHistories
  {
   get { return this._orderHistories; }
  }
  public DateTime? UpdatedDate { get; set; }
  public int? UpdatedBy { get; set; }
}
public class OrderHistoryDTO
{
  public int ID { get; set; }
  public int UserID { get; set; }
  public int OrderID { get; set; }
  public string Event { get; set; }
  public string EventType { get; set; }
  public DateTime? OccuerdDate { get; set; }
  public UserDTO User { get; set; }
}