#c# #asp.net-mvc #asp.net-mvc-5 #automapper #telerik-open-access
#c# #asp.net-mvc #asp.net-mvc-5 #automapper #telerik-открытый доступ
Вопрос:
Я использую Telerik Open Access для работы с базой данных. У меня есть родительский класс с именем Order, и он включает в себя 2 класса с именами OrderHistory и Tasks. Теперь произойдет любое событие, например, если заказ будет приостановлен или отправлен для отправки, связанная с ним запись будет помещена в таблицу OrderHistory, и таблица заказов будет обновлена. Теперь я выполнил следующий код, но иногда это работает, а иногда нет. Я мало что знаю об этом telerik open access и 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;
}
OrderDto
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; }
}
Комментарии:
1.
it works sometimes but sometimes not
— Что вы имеете в виду?2. @rhughes иногда строка ‘ar orderBase = AutoMapper.Mapper.Map<Порядок>(OrderEntity);’ приводит к тому, что список orderhistories равен 0, хотя данные есть.
3. @Dhwani, я протестировал ваш код с некоторыми случайными данными в моей базе данных и не воспроизвел проблему, которую вы описываете. В случае, если вы обнаружите проблему, связанную с доступом к данным Telerik (ранее известным как Telerik OpenAccess ORM), я бы посоветовал вам опубликовать свой вопрос на этом форуме: telerik.com/forums/data-access/general-discussions
4. @DoroteyaAgayna ок. Я все еще сталкиваюсь с той же проблемой. Итак, я думаю, теперь я должен разместить на форуме. Спасибо