0

我正在使用 Telerik Open Access 进行数据库操作。我有一个名为 Order 的父类,它包括 2 个名为 OrderHistory 和 Tasks 的类。现在任何类型的事件都会发生,例如订单被搁置或用于调度它的相关条目将被放在 OrderHistory 表中并且 Order 表将被更新。现在我已经完成了以下代码,但它有时有效,但有时无效。我对这个 Telerik 开放访问和自动映射器了解不多。

控制器调用:

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

订购DTO

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

订单历史DTO

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

0 回答 0