Strategia wykonywania niestandardowychCustom execution strategy

Brak mechanizmu zarejestrować strategii wykonywania niestandardowych swoje własne, jeśli chcesz zmienić dowolne z ustawień domyślnych.There is a mechanism to register a custom execution strategy of your own if you wish to change any of the defaults.

Jednak jeśli inicjuje kodu przy użyciu transakcji BeginTransaction() definiowania grupy działań, które muszą być traktowane jako jednostka, tj. wszystkie elementy wewnątrz transakcji musiałaby zostać odtworzone następuje awaria.However, if your code initiates a transaction using BeginTransaction() you are defining your own group of operations that need to be treated as a unit, i.e. everything inside the transaction would need to be played back shall a failure occur.Otrzymasz wyjątek w następujący, jeśli użytkownik spróbuje to zrobić, korzystając z strategia wykonywania.You will receive an exception like the following if you attempt to do this when using an execution strategy.

Ogólnie rzecz biorąc po awarii połączenia bieżąca transakcja zostanie wycofana.In general, when there is a connection failure the current transaction is rolled back.Jednak jeśli połączenie zostało przerwane, gdy transakcja jest jest zatwierdzona powstałe w ten sposób stan transakcji jest nieznany.However, if the connection is dropped while the transaction is being committed the resulting state of the transaction is unknown.Zobacz to wpis w blogu więcej szczegółów.See this blog post for more details.

Domyślnie strategia wykonywania ponowi operację tak, jakby transakcja została wycofana, ale jeśli nie jest to spowoduje wyjątek nowy stan bazy danych jest niezgodny lub może prowadzić do uszkodzenie danych Jeśli Operacja nie bazuje na określonym stanie, na przykład podczas usuwania wierszy z automatycznego generowania wartości klucza.By default, the execution strategy will retry the operation as if the transaction was rolled back, but if it's not the case this will result in an exception if the new database state is incompatible or could lead to data corruption if the operation does not rely on a particular state, for example when inserting a new row with auto-generated key values.

Istnieje kilka sposobów postępowania z nią.There are several ways to deal with this.