Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Entity Framework nie może zaktualizować danych w tabeli za pomocą klucza złożonego (Oracle)

Proszę podać:

  • Definicja jednostki
  • Klasa mapowania / konfiguracja z kontekstu
  • Definicja tabeli SQL

BackPropagateServerGen

Patrząc na ślad stosu, kluczową rzeczą, którą widzę, jest BackPropagateServerGen .

Entity Framework uruchamia aktualizację względem bazy danych, ale jedna z wartości klucza złożonego (przypuszczalnie COPY_ID) jest faktycznie zmieniana przez wywołanie UPDATE. Ta wartość wygenerowana przez serwer wraca z wywołania SQL, a następnie Entity Framework skarży się, że wartość klucza jest zmieniana spod niej.

Zgaduję więc, że wartość klucza złożonego COPY_ID jest zdefiniowana jako identyfikator generowany przez serwer, ale dzieje się jedno lub oba z nich:

  • Mapujesz do widoku lub procedury składowanej, która zakłóca to, czego Entity Framework oczekiwałby od waniliowej aktualizacji
  • Masz jeden lub więcej wyzwalaczy w tabeli, widoku lub procedurze składowanej, które zakłócają wynik.

Jeśli masz jakieś wyzwalacze, wyłącz je tymczasowo, aby sprawdzić, czy problem ustąpi.

Jeśli mapujesz do widoku lub procedury składowanej, spróbuj mapować bezpośrednio do tabeli, jeśli to możliwe.

Użyj dowolnych narzędzi do profilowania, aby przechwycić, jaki kod SQL jest wykonywany przez kod.

Podsumowanie

Myślę, że wywołanie UPDATE faktycznie dociera do bazy danych, ale zwracany wynik zmienia wartości klucza, powodując niepowodzenie Entity Framework i prawdopodobnie wycofywanie transakcji UPDATE (w zależności od używanej wersji EF).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wyłącz wyzwalacz logowania w Oracle

  2. Jak pozbyć się pustej, ale ogromnej kolumny LOB?

  3. Poprawka:„wiodąca precyzja interwału jest zbyt mała” w Oracle Database

  4. Odbierz przywileje w Oracle

  5. Najszybszy sposób na porównania pól w tej samej tabeli z dużą ilością danych w Oracle