2009-03-18 15 views
7

Jaki jest najlepszy sposób sprawdzenia problemów współbieżności przy użyciu LINQ do SQL w aplikacji ASP.net.Współbieżność z Linq To Sql i ASP.NET

W mojej aplikacji pobieram rekord z bazy danych i wyświetlam pola w edytowalnych polach tekstowych. Następnie format danych jest odrzucany.

Jak zapisać obiekt encji, aby móc korzystać z wbudowanych funkcji współbieżności L2Sql? Nie mogę zapisać obiektu w sesji i ponownie dołączyć go do nowego datacontext: l2s narzeka, że ​​obiekt nie jest nowy.

LinqDataSource udaje się to jakoś zrobić. Czy ktoś wie jak?

Odpowiedz

2

Sposób optymistyczne współbieżności w linq2sql działa to, że przechowuje oryginalne wartości i porównuje je na wkładki.

Jeśli wyrzucisz datakekst, stracisz oryginalne wartości.

Co zwykle robię, to załadować obiekt z bazy danych jeszcze raz, gdy mam zamiar zapisać, a następnie zmodyfikuj ten obiekt za pomocą wartości z formularza.

+2

Tak, ale jeśli zrobię to (co było wcześniej), wszelkie zmiany innych użytkowników zostaną załadowane, a Linq do sql nie spowoduje błędu współbieżności. –

+0

Czy próbowałeś/aś spojrzeć na metodę Tabeli .Attach (metoda TEntity, TEntity original)? – AndreasN

+0

Jak to się różni od samego pobierania obiektu z bazy danych i wprowadzania zmian oraz wykonywania funkcji SubmitChanges()? –

0

Linq Do SQL domyślnie obsługuje optimistic concurrency control.

można zmienić właściwość każdego pola UpdateCheck w tabeli:

In the LINQ to SQL object model, an optimistic concurrency conflict occurs when both of the following conditions are true:

  • The client tries to submit changes to the database.
  • One or more update-check values have been updated in the database since the client last read them.
+0

Problem polega na tym, że tracą DataContext podczas odświeżenia strony i nie można dołączyć oryginalnego obiektu do nowego DC. – Lucas