ADO.NET Entity Framework: Kreator aktualizacji nie dodaje tabel
I dodał nowy ADO.Net model danych encji do mojego projektu i użył Kreatora aktualizacji , aby dodać tabele do modelu. Pięć wybranych tabel zostało dodanych do powierzchni projektowej. Dwie inne tabele nie dodadzą. Zaznaczam je w kreatorze i klikam Zakończ, ale nigdy nie pojawiają się na powierzchni projektu.
Czy Jest to błąd, czy są sytuacje, w których nie można dodać tabeli do modelu (według projektu)?
UPDATE: XML (*.edmx) ujawnia problem.
<!--Errors Found During Generation:
warning 6013: The table/view 'FooBar.dbo.Roles' does not
have a primary key defined and no valid primary key could be inferred.
This table/view has been excluded. To use the entity you will need to
review your schema, add the correct keys and uncomment it.-->
<!--<EntityType Name="Roles">
<Property Name="role_id" Type="decimal" />
<Property Name="role_desc" Type="nvarchar" MaxLength="30" />
</EntityType>-->
Dzięki Craig za odpowiedź.
10 answers
Powierzchnia projektowa różni się od modelu encji. Możliwe jest posiadanie tabeli w mapowaniu w EDMX, która nie pojawia się na powierzchni projektu. Wyświetl plik jako XML, aby sprawdzić, czy tak jest. W takim przypadku Kreator aktualizacji nie pozwoli na ponowne dodanie tabel, ponieważ są one już częścią modelu encji. Tak więc, ogólnie rzecz biorąc, Kreator aktualizacji wie więcej o Twoim modelu jednostki niż o powierzchni projektowej, per se .
I don ' t think dokładnie w takiej sytuacji się znajdujesz, ale powinno to dać ci ogólny pomysł na rozwiązanie: wejdź do XML i poszukaj odniesień do danych tabel.
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
2009-02-13 14:16:33
Ustaw podstawowe klucze do wszystkich tabel lub tylko jedno niezaznaczone pole wyboru "Zezwól na null" do dowolnej kolumny każdej tabeli. U mnie działa:)
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
2010-07-21 11:37:07
1.Zmiana struktury tabeli i dodanie kolumny podstawowej. Zaktualizuj Model.
2./ Align = "left" / Plik EDMX w edytorze XML i spróbuj dodać nową kolumnę pod tagiem dla tej konkretnej tabeli. (NIE ZADZIAŁA)
3.Zamiast tworzyć nową kolumnę główną do wyjścia tabeli, zrobię klucz złożony, angażując wszystkie istniejące kolumny.(Obrobione)
Entity Framework: dodawanie DataTable bez klucza podstawowego do modelu Entity.
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-04-29 18:09:08
Ja też miałem ten problem, wszystkie powyższe nie zadziałały na mnie. Pomogły mi następujące rzeczy.
Gdy próbujesz połączyć się z bazą danych, Ta baza danych może mieć różnych użytkowników z różnymi poświadczeniami, które może zaakceptować. Powiedzmy user a till D.
Jeśli próbujesz połączyć się z użytkownikiem, upewnij się, że użytkownik ma włączone odpowiednie poświadczenia, w tym przypadku opcje odczytu i zapisu są włączone.
W tym celu uruchom MS SQL Server Managment Studio, połączone z Twoim serwerem SQL i wybierz bazę danych, z którą chcesz nawiązać połączenie w programie visual studio. Pod 'your_dbname' -- > Security -- > Users znajduje się lista użytkowników. Kliknij prawym przyciskiem myszy nazwę Użytkownika, z którym próbujesz się zalogować i wybierz Właściwości. Otwiera się okno. Wybierz stronę "ogólne" (domyślnie zaznaczoną) i w zakładce "Członkostwo w roli bazy danych" upewnij się, że wybrano "db_datareader" i "db_datawrite".
Uwaga: po zalogowaniu się zbyt MS SQL Server Managment Studio upewnij się, że logujesz się z użytkownikiem, który może włącz/wyłącz te opcje...
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-13 12:54:04
Sprawdź "Null" w danej tabeli. Jeśli wszystkie kolumny są ustawione na "Zezwalaj na Null", struktura encji uważa ją za tabelę "Null". Miałem ten sam problem i odznaczyłem 'Allow Null' i dodałem wymaganą tabelę.
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
2017-03-01 20:58:26
Moim rozwiązaniem jest usunięcie całego modelu i odczytanie go, w tym nowych tabel, które chcę.
Przypadkowo raz usunąłem tabelę w Projektancie i nie mogłem jej odczytać. Stąd usunięcie całego modelu i odczytanie go.
Też miałem z tym problemy ( Ado.Net model danych podmiotu nie aktualizuje się poprawnie )
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
2017-05-23 12:02:39
Zostało to rozwiązane w najnowszej wersji (środowisko: VS 2012,. NET framework 4.5). Proste otwieranie .plik edmx i dodać wymagane tabele / procedury składowane / widoki. Tabela / widok, który nie posiada klucza podstawowego, zostanie utworzony jako tabela / widok Tylko do odczytu.
Tabela / widok 'TABLE_NAME' nie ma zdefiniowanego klucza głównego. Klucz został wywnioskowany i definicja została utworzona jako tabela / widok Tylko do odczytu.
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-04-18 03:22:48
Nie musisz usuwać całego modelu (mogą to być setki tabel!).
Kreator może obsłużyć "dodawanie nowych" elementów, ale niektóre zmiany, takie jak zmiana kluczy kompozytowych i zmiana nazwy kolumn - nie wie, co zrobić - więc nie próbuje-i rzeczy się zsynchronizować.
Więc: Usunięcie danych tabel z modelu (tryb koncepcyjny) oraz z modelu.Przechowuj, a następnie Aktualizuj model za pomocą kreatora i ponownie dodawaj tylko te tabele.
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-07-26 17:20:02
Po prostu rzucam więcej szczegółów dla każdego, kto nie musiał tego robić wcześniej. Używam visual studio 2013 z zainstalowaną aktualizacją 4. Dodałem kilka pól do tabeli, usunąłem tabelę z mojego modelu, a następnie poszedłem do aktualizacji i nie pozwoliłem sprawdzić żadnej z tabel.
Mam klucz podstawowy.
Stworzyłem nową tabelę testową, która pojawiła się i pozwalała mi ją sprawdzić, ale nie moja oryginalna.
Nigdy wcześniej nie otwierałem go w XML i nie wiedziałem jak to zrobić to. Kliknij prawym przyciskiem myszy na .plik edmx i" Otwórz za pomocą " -- wybierz edytor xml.
Omawiana tabela była tam w porządku, miała nawet nowe pola (dziwne).
Usunąłem wszystkie odniesienia do niego (kilka razy) - po usunięciu jednego i zapisać, jeśli próbujesz go otworzyć i nie wyświetli się po prostu idź do przodu i wybierz "view XML" - spójrz na błędy i w zasadzie śledzić odbijającą się piłkę, dopóki nie wyczyścisz go.
Mam nadzieję, że dodatkowy szczegół pomoże ktokolwiek.
Joe
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-12-17 14:10:54
Jednym z łatwych sposobów, jaki znalazłem, było (w SQL Server Management Studio) dodanie kolumny ID typu INT, odznaczenie opcji "Allow null" oraz w sekcji Właściwości kolumny (ID) >> Specyfikacja tożsamości >> sprawdź (is Identity) i upewnij się, że ustawiono przyrost.
Po wykonaniu powyższego wróć do swojego .okno edmx, kliknij prawym przyciskiem myszy i zaktualizuj Model z bazy danych.
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-08-05 16:33:08