ASP.NET MVC + Entity Framework com verificação de simultaneidade
Estou tentando implementar um aplicativo seguindo o exemplo desta página:http: //www.asp.net/entity-framework/tutorials/handling-concurrency-with-the-entity-framework-in-an-asp-net-mvc-applicatio
Tenho uma classe de domínio com carimbo de data e hora como campo de verificação de simultaneidade:
public class PurchaseOrder {
[Timestamp]
public byte[] Timestamp {get; set;}
}
No meu Edit.aspx, tenho o carimbo de data / hora como campo oculto (estou usando um modelo de exibição):
<%: Html.HiddenFor(model => model.PurchaseOrder.Timestamp) %>
Este é o meu método Edit ():
public ActionResult Edit(int id, FormCollection collection) {
var purchaseOrder = db.PurchaseOrders.Find(id);
UpdateModel(purchaseOrder, "PurchaseOrder", collection);
db.Entry(purchaseOrder).State = EntityState.Modified;
db.SaveChanges();
}
Abri a mesma página de edição em dois navegadores separados ao mesmo tempo (para que o carimbo de data e hora sejam os mesmos) e os atualizei um após o outr
Quando atualizo a segunda página, esperava uma DbUpdateConcurrencyException. Mas não estou conseguind
O que eu acho que aconteceu é que, na segunda página, estou recebendo o objeto purchaseOrder novamente do banco de dados na ação Editar:
var purchaseOrder = db.PurchaseOrders.Find(id);
Portanto, o registro de data e hora é o novo registro de data e hora devido à edição anterio
Mas esperava que o UpdateModel () substituísse o valor do carimbo de data / hora da coleção de formulário. Obviamente, este não é o cas
Como posso definir o valor do carimbo de data e hora do pedido de compra recuperado como no campo oculto, para que a simultaneidade seja detectad