Ma DefiningQuery, ale nie ma elementu InsertFunction ... err
To coś doprowadza mnie do szału, a błąd jest dla mnie zupełnie bezsensowny:
nie można zaktualizować EntitySet 'TableB', ponieważ posiada zapytanie definiujące i w elemencie nie istnieje żaden element obsługujący bieżącą operację.
Moje tabele są umieszczone tak:
TableA int idA (identity, primary key) ... TableB int idA (FK for TableA.idA) int val
TableB nie ma zdefiniowanego klucza podstawowego w serwerze SQL. Struktura encji zaimportowała tabelę i asocjację i ustawiła oba pola jako klucz. Ale wyświetli ten błąd, gdy spróbuję zrobić wkładka do stołu!
Co się stało??Edit: Jak zasugerował Alex, rozwiązanie było takie:
- kliknij prawym przyciskiem myszy plik edmx, wybierz Otwórz za pomocą edytora XML W tym celu należy wykonać następujące czynności:]}
- Usuń DefiningQuery całkowicie
- Zmień nazwę sklepu:Schema="dbo" na Schema="dbo" (w przeciwnym razie kod wygeneruje błąd mówiący, że nazwa jest nieprawidłowa)
- Usuń sklep: Nazwa własność
Zostawiłem klucz tak, jak był, ponieważ było dla mnie OK, że obie kolumny są częścią klucza.
5 answers
Dobrze, gdy tabela jest napotkana bez klucza podstawowego, jest traktowana jako Widok.
I widoki pojawiają się w pliku EDMX (otwórz w edytorze XML, aby zobaczyć) w elemencie StorageModel\EntitySet[n]\DefiningQuery.
Gdy masz zapytanie definiujące, Encja staje się readonly, chyba że dodasz funkcje modyfikacji. Potrzebujesz 3 funkcji modyfikacji (aka procedur składowanych) po jednej dla każdej z nich Insert, Update i Delete.
Ale masz dwie opcje:
Zmień klucz definicja:
- i przekonać EF, że to, co uważa za widok, jest naprawdę tabelą
- lub dodać odpowiednie funkcje modyfikacji
W Twoim przypadku polecam (1).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-17 19:24:31
Wystarczy dodać klucz podstawowy do tabeli. To wszystko. Problem rozwiązany.
ALTER TABLE <TABLE_NAME>
ADD CONSTRAINT <CONSTRAINT_NAME> PRIMARY KEY(<COLUMN_NAME>)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-28 09:11:52
Brakowało mi klucza głównego na stole i dostałem ten Komunikat o błędzie. Jedną rzeczą, którą zauważyłem było po dodaniu klucza do tabeli, musiałem wyczyścić tabelę z edmx za pomocą projektanta, zapisać edmx, a następnie zaktualizować go ponownie, aby dodać tabelę z powrotem. Nie odbierał klucza, ponieważ był już przypisany jako widok. Nie wymagało to ręcznej edycji edmx.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-09 02:02:29
Dodaj klucz podstawowy do tabeli, Usuń model z modelu edmx, a następnie wybierz opcję Aktualizuj z bazy danych, Zbuduj i uruchom...... prace
@Palantir. Sprawdź, czy obie stoły mają ustawione klucze podstawowe i bądź ostrożny z wieloma kluczami podstawowymi ustawionymi w tabeli.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-27 14:50:25