Załóżmy, że mam tabelę zamówień w mojej bazie danych i odpowiadającą jej klasę modelu wygenerowaną przez projektanta VS2008 "Linq to SQL Classes". Załóżmy, że mam również przechowywaną procedurę (ProcessOrder
) w mojej bazie danych, której używam do wykonania przetwarzania w rekordzie zamówienia.Jak uzyskać Linq-SQL, aby odświeżyć jego lokalną kopię rekordu bazy danych?
Gdybym wykonaj następujące czynności:
var order = dataContext.Orders.Where(o => o.id == orderId).First();
// More code here
dataContext.ProcessOrder(orderId);
order.Status = "PROCESSED";
dataContext.SubmitChanges();
... wtedy będę miał naruszenie współbieżności jeśli ProcessOrder
przechowywane proc zmieniła kolejność (co jest oczywiście bardzo prawdopodobne), ponieważ L2S wykryje że rekord zamówienia został zmieniony i nie uda się przesłać zmian do tego zamówienia.
Wszystko to jest dość logiczne, ale co jeśli chce zaktualizować rekord zamówienia po wywołaniu zapisanego proc? Jak mogę powiedzieć L2S, aby zapomniał o swojej kopii w pamięci podręcznej i odświeżył ją z DB?
Perfect. Widzę, że mogę również określić konkretny rekord zamówienia, który jest dokładnie tym, czego potrzebuję. Dzięki! –
Ale nie aktualizuje powiązanej właściwości kolekcji nawigacji, która mapuje do innej tabeli. Aktualizuje tylko te właściwości, które są odwzorowane na kolumnę tabeli, do której wskazuje aktualna Jednostka. Czy istnieje wyjście z tego? – RBT