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ź.

Author: Community, 2009-02-13

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.

 40
Author: Craig Stuntz,
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:)

 35
Author: Parvinder,
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.

 9
Author: Pratap,
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...

 5
Author: Kip ei,
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ę.

 4
Author: Ketan Dubey,
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 )

 1
Author: Community,
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.

 1
Author: gyane,
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.

 0
Author: RoyGr,
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

 0
Author: Joe Ruder,
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.

 0
Author: Ryan D,
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