Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
LINQ to SQL nie wymusza następujących wymagań, ale zachowanie jest niezdefiniowane, jeśli te wymagania nie są spełnione.
Metoda zastępowania nie może wywołać SubmitChanges metody lub Attach. LinQ to SQL zgłasza wyjątek, jeśli te metody są wywoływane w metodzie zastąpienia.
Metody zastępowania nie mogą służyć do uruchamiania, zatwierdzania ani zatrzymywania transakcji. Operacja jest wykonywana SubmitChanges w ramach transakcji. Wewnętrzna transakcja zagnieżdżona może zakłócać zewnętrzną transakcję. Metody przesłonięcia obciążenia mogą uruchamiać transakcję dopiero po ustaleniu, że operacja nie jest wykonywana w obiekcie Transaction.
Metody zastąpienia powinny być zgodne z odpowiednim optymistycznym mapowaniem współbieżności. Oczekuje się, że metoda zastąpienia zgłosi ChangeConflictException błąd, gdy wystąpi optymistyczny konflikt współbieżności. LINQ to SQL przechwytuje ten wyjątek, aby można było poprawnie przetworzyć opcję podaną SubmitChanges w pliku SubmitChanges.
Metody tworzenia (
Insert
) iUpdate
zastępowania powinny wrócić wartości kolumn wygenerowanych przez bazę danych do odpowiednich elementów członkowskich obiektów po pomyślnym zakończeniu operacji.Jeśli na przykład
Order.OrderID
jest mapowany na kolumnę tożsamości (klucz podstawowy autoinkrementacji ),InsertOrder()
metoda zastąpienia musi pobrać identyfikator wygenerowany przez bazę danych i ustawićOrder.OrderID
element członkowski na ten identyfikator. Podobnie elementy członkowskie znacznika czasu muszą zostać zaktualizowane do wartości znacznika czasu wygenerowanego przez bazę danych, aby upewnić się, że zaktualizowane obiekty są spójne. Brak propagacji wartości wygenerowanych przez bazę danych może spowodować niespójność między bazą danych a obiektami śledzonym przez DataContextelement .Użytkownik jest odpowiedzialny za wywołanie poprawnego dynamicznego interfejsu API. Na przykład w metodzie przesłonięcia aktualizacji można wywołać tylko metodę ExecuteDynamicUpdate . LinQ to SQL nie wykrywa lub sprawdza, czy wywołana metoda dynamiczna jest zgodna z odpowiednią operacją. Jeśli wywoływana jest metoda inapplicable (na przykład ExecuteDynamicDelete w celu zaktualizowania obiektu), wyniki są niezdefiniowane.
Na koniec oczekuje się, że metoda zastępowania wykonuje operację deklarowaną. Semantyka operacji LINQ to SQL, takich jak chętne ładowanie, odroczone ładowanie i SubmitChanges) wymagają przesłonięć w celu zapewnienia usługi deklarowanej. Na przykład zastąpienie obciążenia, które po prostu zwraca pustą kolekcję bez sprawdzania zawartości w bazie danych, prawdopodobnie doprowadzi do niespójnych danych.