20

Mam model generowany z db z Entity Framework. Kiedy mam jakąkolwiek zmianę w bazie danych, aktualizuję model z bazy danych, aby uzyskać zmianę modelu. Ale ta aktualizacja jest stosowana do wszystkich encji (tabel) zawartych w modelu.Jak zaktualizować tylko jedną tabelę dla modelu z bazy danych za pomocą Entity Framework?

Teraz dodaję nową kolumnę do tabeli Tab1. Nie chcę aktualizować modelu z bazy danych jako niektórych innych zmian, których nie chcę uwzględnić w modelu. Mogę ręcznie dodać nową właściwość w modelu dla jednostki Tab1. następnie spowodował błąd mapowania.

Muszę zaktualizować Model.Store, aby tabela zawierała nową kolumnę. Oznacza to, że chcę zaktualizować model tylko dla Tab1.

Jak mogę to zrobić?

Odpowiedz

39

Plik EDMX to plik XML będący połączeniem 3 różnych części, które składają się na całość. Po kliknięciu prawym przyciskiem myszy na pliku EDMX i wybierz "Otwórz za pomocą ... XML Editor" zobaczysz 3 różne sekcje:

  • <edmx:ConceptualModels>
  • <edmx:StorageModels>
  • <edmx:Mappings>

Te sekcje można edytować ręcznie, na własne ryzyko! :-)
W ten sposób możesz modyfikować tylko to, czego potrzebujesz.

Należy pamiętać, że można również generować pliki MSL CSDL, SSDL &, zamiast umieszczać je w pliku binarnym, zmieniając właściwość "Przetwarzanie artefaktu meta" w modelu na "Kopiuj do katalogu wyjściowego".

Jeśli nie chcesz to zrobić ręcznie, nie ma Huagati DBML/EDMX tool, jest bezpłatny i można go pobrać z huagati official site lub visual studio gallery, która jest Visual Studio plugin, który pozwala wybrać, jakie zmiany muszą być wykonane .

+0

dziękuję. Robię to ręcznie. Więc nie ma sposobu, aby automatycznie "aktualizacja z bazy danych" dla pojedynczego obiektu. – KentZhou

+2

Jedyny znany mi sposób: [narzędzie Huagati DBML/EDMX] (http://www.huagati.com/dbmltools/). Nawiasem mówiąc, nie jestem facetem, który to zrobił!;-) – MaxSC

+0

I nie zapomnij o przegłosowaniu i/lub zaakceptowaniu odpowiedzi, jeśli uważasz, że to było pomocne! Dzięki ;-) – MaxSC

-14

Istnieje sposób na zrobienie tego automatycznie.

kliknij prawym przyciskiem myszy plik edmx> zaktualizuj model z bazy danych> Odśwież kartę> Tabele> wybierz tabelę (którą chcesz zaktualizować) i naciśnij Zakończ to wszystko.

+7

Nie sądzę, że to prawda/Z tego co wiem, odświeża wszystko na karcie odświeżania. To pierwotny problem PO (i mój). –

+2

To nie rozwiązuje zadanego pytania i może przynieść więcej szkód po odświeżeniu całego modelu. –

+3

Podczas gdy interfejs użytkownika sprawia, że ​​można zaktualizować tylko jedną tabelę, wynikiem jest aktualizacja wszystkich tabel. Niestety, ta odpowiedź jest niepoprawna. Byłoby wspaniale, gdyby edytor został zaktualizowany do pracy zgodnie z opisem tutaj. –

5

Używam następującej sztuczki (warunkowej). Można to zrobić tylko wtedy, gdy brak tabeli zależy od tabeli, którą chcesz zaktualizować.

  1. Usuń tabelę, która wymaga aktualizacji.
  2. Kliknij prawym przyciskiem myszy Model i wybierz "Aktualizuj model z bazy danych". Tabela będzie wyświetlana w zakładce "Dodaj". Wybierz tę tabelę i Zaktualizuj model.

Ostrożność: Jeśli inne istniejące tabele mają w nich zmian, EF będzie aktualizować te zmiany, jak również.

+2

To aktualizuje kolumny w innych tabelach dla mnie. – Marshal

+1

Hmm .. EF zaktualizowałoby kolumny także w innych tabelach. Nie wiem, jak tego uniknąć. :-( –

Powiązane problemy