我有一个方法是从数据库中读取数据实体,将其转换为视图模型。然后在该方法中,有另一个表更新。因此,第一个实体更改已提交回数据库。
我该如何解决这个问题?这是我将OrderHeader实体附加到视图模型的方式吗?注意viewMode.OrderHeader的类型为OrderHeader。有没有办法表明我只使用数据的副本,以便后续提交不会保存这些更改?我是否需要将此实体从上下文中分离出来?
public OrderHeaderViewModel ConvertClassToViewModel(OrderHeader entity)
{
OrderHeaderViewModel viewModel = new OrderHeaderViewModel();
viewModel.OrderHeader = entity;
viewModel.OrderHeader.CustomerRequestedDateTime =
ManageTimeDetailsAppServ.ConvertFromUTCDateTime(viewModel.OrderHeader.CustomerRequestedDateTime).Value; <------ THIS CHANGE IS BEING COMMITTED TO THE DB.
return viewModel;
}
答案 0 :(得分:0)
通过将.AsNoTracking()添加到存储库搜索来修复。
var orderHdr = _orderHeaderRepository.SearchFor(predicate).AsNoTracking().Single();